From: Andy P. <at...@us...> - 2002-04-09 16:29:07
|
Update of /cvsroot/linux-vax/kernel-2.4/net/rose In directory usw-pr-cvs1:/tmp/cvs-serv32481/rose Modified Files: af_rose.c rose_dev.c rose_route.c rose_subr.c Log Message: synch 2.4.15 commit 21 Index: af_rose.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/net/rose/af_rose.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- af_rose.c 14 Jan 2001 17:13:39 -0000 1.1.1.1 +++ af_rose.c 9 Apr 2002 16:29:01 -0000 1.2 @@ -70,7 +70,7 @@ int sysctl_rose_maximum_vcs = ROSE_DEFAULT_MAXVC; int sysctl_rose_window_size = ROSE_DEFAULT_WINDOW_SIZE; -static struct sock *volatile rose_list = NULL; +static struct sock *rose_list; static struct proto_ops rose_proto_ops; @@ -471,7 +471,10 @@ if (get_user(len, optlen)) return -EFAULT; - + + if (len < 0) + return -EINVAL; + switch (optname) { case ROSE_DEFER: val = sk->protinfo.rose->defer; @@ -505,7 +508,7 @@ return -ENOPROTOOPT; } - len = min(len, sizeof(int)); + len = min_t(unsigned int, len, sizeof(int)); if (put_user(len, optlen)) return -EFAULT; @@ -1056,7 +1059,7 @@ SOCK_DEBUG(sk, "ROSE: sendto: building packet.\n"); size = len + AX25_BPQ_HEADER_LEN + AX25_MAX_HEADER_LEN + ROSE_MIN_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, AX25_BPQ_HEADER_LEN + AX25_MAX_HEADER_LEN + ROSE_MIN_LEN); @@ -1118,7 +1121,7 @@ frontlen = skb_headroom(skb); while (skb->len > 0) { - if ((skbn = sock_alloc_send_skb(sk, frontlen + ROSE_PACLEN, 0, 0, &err)) == NULL) + if ((skbn = sock_alloc_send_skb(sk, frontlen + ROSE_PACLEN, 0, &err)) == NULL) return err; skbn->sk = sk; @@ -1392,8 +1395,8 @@ } static struct net_proto_family rose_family_ops = { - PF_ROSE, - rose_create + family: PF_ROSE, + create: rose_create, }; static struct proto_ops SOCKOPS_WRAPPED(rose_proto_ops) = { @@ -1414,24 +1417,31 @@ sendmsg: rose_sendmsg, recvmsg: rose_recvmsg, mmap: sock_no_mmap, + sendpage: sock_no_sendpage, }; #include <linux/smp_lock.h> SOCKOPS_WRAP(rose_proto, PF_ROSE); static struct notifier_block rose_dev_notifier = { - rose_device_event, - 0 + notifier_call: rose_device_event, }; static struct net_device *dev_rose; +static const char banner[] = KERN_INFO "F6FBB/G4KLX ROSE for Linux. Version 0.62 for AX25.037 Linux 2.4\n"; + static int __init rose_proto_init(void) { int i; rose_callsign = null_ax25_address; + if (rose_ndevs > 0x7FFFFFFF/sizeof(struct net_device)) { + printk(KERN_ERR "ROSE: rose_proto_init - rose_ndevs parameter to large\n"); + return -1; + } + if ((dev_rose = kmalloc(rose_ndevs * sizeof(struct net_device), GFP_KERNEL)) == NULL) { printk(KERN_ERR "ROSE: rose_proto_init - unable to allocate device structure\n"); return -1; @@ -1447,7 +1457,7 @@ sock_register(&rose_family_ops); register_netdevice_notifier(&rose_dev_notifier); - printk(KERN_INFO "F6FBB/G4KLX ROSE for Linux. Version 0.62 for AX25.037 Linux 2.4\n"); + printk(banner); ax25_protocol_register(AX25_P_ROSE, rose_route_frame); ax25_linkfail_register(rose_link_failed); Index: rose_dev.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/net/rose/rose_dev.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- rose_dev.c 14 Jan 2001 17:13:40 -0000 1.1.1.1 +++ rose_dev.c 9 Apr 2002 16:29:01 -0000 1.2 @@ -121,6 +121,7 @@ if (!rose_route_frame(skbn, NULL)) { kfree_skb(skbn); stats->tx_errors++; + return 1; } stats->tx_packets++; @@ -199,8 +200,6 @@ memset(dev->priv, 0, sizeof(struct net_device_stats)); dev->get_stats = rose_get_stats; - - dev_init_buffers(dev); return 0; }; Index: rose_route.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/net/rose/rose_route.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- rose_route.c 14 Jan 2001 17:13:47 -0000 1.1.1.1 +++ rose_route.c 9 Apr 2002 16:29:01 -0000 1.2 @@ -221,13 +221,11 @@ { struct rose_neigh *s; unsigned long flags; - struct sk_buff *skb; rose_stop_ftimer(rose_neigh); rose_stop_t0timer(rose_neigh); - while ((skb = skb_dequeue(&rose_neigh->queue)) != NULL) - kfree_skb(skb); + skb_queue_purge(&rose_neigh->queue); save_flags(flags); cli(); @@ -684,15 +682,13 @@ static void rose_del_route_by_neigh(struct rose_neigh *rose_neigh) { struct rose_route *rose_route, *s; - struct sk_buff *skb; rose_neigh->restarted = 0; rose_stop_t0timer(rose_neigh); rose_start_ftimer(rose_neigh); - while ((skb = skb_dequeue(&rose_neigh->queue)) != NULL) - kfree_skb(skb); + skb_queue_purge(&rose_neigh->queue); rose_route = rose_route_list; Index: rose_subr.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/net/rose/rose_subr.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- rose_subr.c 14 Jan 2001 17:13:49 -0000 1.1.1.1 +++ rose_subr.c 9 Apr 2002 16:29:01 -0000 1.2 @@ -42,13 +42,8 @@ */ void rose_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.rose->ack_queue)) != NULL) - kfree_skb(skb); + skb_queue_purge(&sk->write_queue); + skb_queue_purge(&sk->protinfo.rose->ack_queue); } /* |