From: Andy P. <at...@us...> - 2002-04-09 16:29:07
|
Update of /cvsroot/linux-vax/kernel-2.4/net/netrom In directory usw-pr-cvs1:/tmp/cvs-serv32481/netrom Modified Files: af_netrom.c nr_dev.c nr_loopback.c nr_out.c nr_subr.c Log Message: synch 2.4.15 commit 21 Index: af_netrom.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/net/netrom/af_netrom.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- af_netrom.c 14 Jan 2001 17:11:19 -0000 1.1.1.1 +++ af_netrom.c 9 Apr 2002 16:29:01 -0000 1.2 @@ -407,6 +407,9 @@ if (get_user(len, optlen)) return -EFAULT; + if (len < 0) + return -EINVAL; + switch (optname) { case NETROM_T1: val = sk->protinfo.nr->t1 / HZ; @@ -432,7 +435,7 @@ return -ENOPROTOOPT; } - len = min(len, sizeof(int)); + len = min_t(unsigned int, len, sizeof(int)); if (put_user(len, optlen)) return -EFAULT; @@ -1010,7 +1013,7 @@ SOCK_DEBUG(sk, "NET/ROM: sendto: building packet.\n"); size = len + AX25_BPQ_HEADER_LEN + AX25_MAX_HEADER_LEN + NR_NETWORK_LEN + NR_TRANSPORT_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); @@ -1224,10 +1227,9 @@ return(len); } -static struct net_proto_family nr_family_ops = -{ - PF_NETROM, - nr_create +static struct net_proto_family nr_family_ops = { + family: PF_NETROM, + create: nr_create, }; static struct proto_ops SOCKOPS_WRAPPED(nr_proto_ops) = { @@ -1248,22 +1250,29 @@ sendmsg: nr_sendmsg, recvmsg: nr_recvmsg, mmap: sock_no_mmap, + sendpage: sock_no_sendpage, }; #include <linux/smp_lock.h> SOCKOPS_WRAP(nr_proto, PF_NETROM); static struct notifier_block nr_dev_notifier = { - nr_device_event, - 0 + notifier_call: nr_device_event, }; static struct net_device *dev_nr; +static char banner[] __initdata = KERN_INFO "G4KLX NET/ROM for Linux. Version 0.7 for AX25.037 Linux 2.4\n"; + static int __init nr_proto_init(void) { int i; + if (nr_ndevs > 0x7fffffff/sizeof(struct net_device)) { + printk(KERN_ERR "NET/ROM: nr_proto_init - nr_ndevs parameter to large\n"); + return -1; + } + if ((dev_nr = kmalloc(nr_ndevs * sizeof(struct net_device), GFP_KERNEL)) == NULL) { printk(KERN_ERR "NET/ROM: nr_proto_init - unable to allocate device structure\n"); return -1; @@ -1279,7 +1288,7 @@ sock_register(&nr_family_ops); register_netdevice_notifier(&nr_dev_notifier); - printk(KERN_INFO "G4KLX NET/ROM for Linux. Version 0.7 for AX25.037 Linux 2.4\n"); + printk(banner); ax25_protocol_register(AX25_P_NETROM, nr_route_frame); ax25_linkfail_register(nr_link_failed); Index: nr_dev.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/net/netrom/nr_dev.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- nr_dev.c 14 Jan 2001 17:11:19 -0000 1.1.1.1 +++ nr_dev.c 9 Apr 2002 16:29:01 -0000 1.2 @@ -89,6 +89,7 @@ struct net_device_stats *stats = (struct net_device_stats *)dev->priv; struct sk_buff *skbn; unsigned char *bp = skb->data; + int len; if (arp_find(bp + 7, skb)) { return 1; @@ -113,13 +114,15 @@ kfree_skb(skb); + len = skbn->len; + if (!nr_route_frame(skbn, NULL)) { kfree_skb(skbn); stats->tx_errors++; } stats->tx_packets++; - stats->tx_bytes += skbn->len; + stats->tx_bytes += len; return 1; } @@ -230,8 +233,6 @@ memset(dev->priv, 0, sizeof(struct net_device_stats)); dev->get_stats = nr_get_stats; - - dev_init_buffers(dev); return 0; }; Index: nr_loopback.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/net/netrom/nr_loopback.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- nr_loopback.c 14 Jan 2001 17:11:27 -0000 1.1.1.1 +++ nr_loopback.c 9 Apr 2002 16:29:01 -0000 1.2 @@ -92,10 +92,6 @@ void __exit nr_loopback_clear(void) { - struct sk_buff *skb; - del_timer(&loopback_timer); - - while ((skb = skb_dequeue(&loopback_queue)) != NULL) - kfree_skb(skb); + skb_queue_purge(&loopback_queue); } Index: nr_out.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/net/netrom/nr_out.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- nr_out.c 14 Jan 2001 17:11:20 -0000 1.1.1.1 +++ nr_out.c 9 Apr 2002 16:29:01 -0000 1.2 @@ -56,7 +56,7 @@ frontlen = skb_headroom(skb); while (skb->len > 0) { - if ((skbn = sock_alloc_send_skb(sk, frontlen + NR_MAX_PACKET_SIZE, 0, 0, &err)) == NULL) + if ((skbn = sock_alloc_send_skb(sk, frontlen + NR_MAX_PACKET_SIZE, 0, &err)) == NULL) return; skb_reserve(skbn, frontlen); Index: nr_subr.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/net/netrom/nr_subr.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- nr_subr.c 14 Jan 2001 17:11:23 -0000 1.1.1.1 +++ nr_subr.c 9 Apr 2002 16:29:01 -0000 1.2 @@ -42,19 +42,10 @@ */ void nr_clear_queues(struct sock *sk) { - struct sk_buff *skb; - - while ((skb = skb_dequeue(&sk->write_queue)) != NULL) - kfree_skb(skb); - - while ((skb = skb_dequeue(&sk->protinfo.nr->ack_queue)) != NULL) - kfree_skb(skb); - - while ((skb = skb_dequeue(&sk->protinfo.nr->reseq_queue)) != NULL) - kfree_skb(skb); - - while ((skb = skb_dequeue(&sk->protinfo.nr->frag_queue)) != NULL) - kfree_skb(skb); + skb_queue_purge(&sk->write_queue); + skb_queue_purge(&sk->protinfo.nr->ack_queue); + skb_queue_purge(&sk->protinfo.nr->reseq_queue); + skb_queue_purge(&sk->protinfo.nr->frag_queue); } /* |