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