From: Andy P. <at...@us...> - 2002-04-09 16:20:50
|
Update of /cvsroot/linux-vax/kernel-2.4/net/ax25 In directory usw-pr-cvs1:/tmp/cvs-serv30559/ax25 Modified Files: af_ax25.c ax25_in.c ax25_ip.c ax25_subr.c Log Message: synch 2.4.15 commit 18 Index: af_ax25.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/net/ax25/af_ax25.c,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- af_ax25.c 25 Feb 2001 23:14:55 -0000 1.1.1.2 +++ af_ax25.c 9 Apr 2002 16:20:45 -0000 1.2 @@ -751,7 +751,7 @@ return -EFAULT; valptr = (void *) &val; - length = min(maxlen, sizeof(int)); + length = min_t(unsigned int, maxlen, sizeof(int)); switch (optname) { case AX25_WINDOW: @@ -803,7 +803,7 @@ if (ax25_dev != NULL && ax25_dev->dev != NULL) { strncpy(devname, ax25_dev->dev->name, IFNAMSIZ); - length = min(strlen(ax25_dev->dev->name)+1, maxlen); + length = min_t(unsigned int, strlen(ax25_dev->dev->name)+1, maxlen); devname[length-1] = '\0'; } else { *devname = '\0'; @@ -1451,7 +1451,7 @@ /* Assume the worst case */ size = len + 3 + ax25_addr_size(dp) + AX25_BPQ_HEADER_LEN; - if ((skb = sock_alloc_send_skb(sk, size, 0, msg->msg_flags & MSG_DONTWAIT, &err)) == NULL) + if ((skb = sock_alloc_send_skb(sk, size, msg->msg_flags & MSG_DONTWAIT, &err)) == NULL) return err; skb_reserve(skb, size - len); @@ -1805,6 +1805,7 @@ sendmsg: ax25_sendmsg, recvmsg: ax25_recvmsg, mmap: sock_no_mmap, + sendpage: sock_no_sendpage, }; #include <linux/smp_lock.h> @@ -1840,7 +1841,7 @@ EXPORT_SYMBOL(null_ax25_address); EXPORT_SYMBOL(ax25_display_timer); -static const char banner[] __initdata = KERN_INFO "NET4: G4KLX/GW4PTS AX.25 for Linux. Version 0.37 for Linux NET4.0\n"; +static char banner[] __initdata = KERN_INFO "NET4: G4KLX/GW4PTS AX.25 for Linux. Version 0.37 for Linux NET4.0\n"; static int __init ax25_init(void) { Index: ax25_in.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/net/ax25/ax25_in.c,v retrieving revision 1.1.1.2 retrieving revision 1.2 diff -u -r1.1.1.2 -r1.2 --- ax25_in.c 25 Feb 2001 23:14:55 -0000 1.1.1.2 +++ ax25_in.c 9 Apr 2002 16:20:45 -0000 1.2 @@ -83,9 +83,11 @@ /* Last fragment received ? */ if (ax25->fragno == 0) { - if ((skbn = alloc_skb(AX25_MAX_HEADER_LEN + ax25->fraglen, GFP_ATOMIC)) == NULL) { - while ((skbo = skb_dequeue(&ax25->frag_queue)) != NULL) - kfree_skb(skbo); + skbn = alloc_skb(AX25_MAX_HEADER_LEN + + ax25->fraglen, + GFP_ATOMIC); + if (!skbn) { + skb_queue_purge(&ax25->frag_queue); return 1; } @@ -113,8 +115,7 @@ } else { /* First fragment received */ if (*skb->data & AX25_SEG_FIRST) { - while ((skbo = skb_dequeue(&ax25->frag_queue)) != NULL) - kfree_skb(skbo); + skb_queue_purge(&ax25->frag_queue); ax25->fragno = *skb->data & AX25_SEG_REM; skb_pull(skb, 1); /* skip fragno */ ax25->fraglen = skb->len; @@ -416,7 +417,8 @@ /* * Sort out any digipeated paths. */ - if (dp.ndigi != 0 && ax25->digipeat == NULL && (ax25->digipeat = kmalloc(sizeof(ax25_digi), GFP_ATOMIC)) == NULL) { + if (dp.ndigi && !ax25->digipeat && + (ax25->digipeat = kmalloc(sizeof(ax25_digi), GFP_ATOMIC)) == NULL) { kfree_skb(skb); ax25_destroy_socket(ax25); return 0; @@ -429,7 +431,7 @@ } } else { /* Reverse the source SABM's path */ - memcpy(&ax25->digipeat, &reverse_dp, sizeof(ax25_digi)); + memcpy(ax25->digipeat, &reverse_dp, sizeof(ax25_digi)); } if ((*skb->data & ~AX25_PF) == AX25_SABME) { @@ -468,7 +470,8 @@ /* * Receive an AX.25 frame via a SLIP interface. */ -int ax25_kiss_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *ptype) +int ax25_kiss_rcv(struct sk_buff *skb, struct net_device *dev, + struct packet_type *ptype) { skb->sk = NULL; /* Initially we don't know who it's for */ skb->destructor = NULL; /* Who initializes this, dammit?! */ Index: ax25_ip.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/net/ax25/ax25_ip.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- ax25_ip.c 14 Jan 2001 17:08:08 -0000 1.1.1.1 +++ ax25_ip.c 9 Apr 2002 16:20:45 -0000 1.2 @@ -56,9 +56,14 @@ int ax25_encapsulate(struct sk_buff *skb, struct net_device *dev, unsigned short type, void *daddr, void *saddr, unsigned len) { - /* header is an AX.25 UI frame from us to them */ - unsigned char *buff = skb_push(skb, AX25_HEADER_LEN); + unsigned char *buff; + + /* they sometimes come back to us... */ + if (type == ETH_P_AX25) + return 0; + /* header is an AX.25 UI frame from us to them */ + buff = skb_push(skb, AX25_HEADER_LEN); *buff++ = 0x00; /* KISS DATA */ if (daddr != NULL) @@ -90,7 +95,7 @@ *buff++ = AX25_P_ARP; break; default: - printk(KERN_ERR "AX.25: ax25_encapsulate - wrong protocol type 0x%x2.2\n", type); + printk(KERN_ERR "AX.25: ax25_encapsulate - wrong protocol type 0x%2.2x\n", type); *buff++ = 0; break; } @@ -160,7 +165,7 @@ dst_c = *dst; skb_pull(ourskb, AX25_HEADER_LEN - 1); /* Keep PID */ - skb->nh.raw = skb->data; + ourskb->nh.raw = ourskb->data; ax25_send_frame(ourskb, ax25_dev->values[AX25_VALUES_PACLEN], &src_c, &dst_c, route->digipeat, dev); Index: ax25_subr.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/net/ax25/ax25_subr.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- ax25_subr.c 14 Jan 2001 17:08:01 -0000 1.1.1.1 +++ ax25_subr.c 9 Apr 2002 16:20:45 -0000 1.2 @@ -59,19 +59,10 @@ */ void ax25_clear_queues(ax25_cb *ax25) { - struct sk_buff *skb; - - while ((skb = skb_dequeue(&ax25->write_queue)) != NULL) - kfree_skb(skb); - - while ((skb = skb_dequeue(&ax25->ack_queue)) != NULL) - kfree_skb(skb); - - while ((skb = skb_dequeue(&ax25->reseq_queue)) != NULL) - kfree_skb(skb); - - while ((skb = skb_dequeue(&ax25->frag_queue)) != NULL) - kfree_skb(skb); + skb_queue_purge(&ax25->write_queue); + skb_queue_purge(&ax25->ack_queue); + skb_queue_purge(&ax25->reseq_queue); + skb_queue_purge(&ax25->frag_queue); } /* |