|
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);
}
/*
|