|
From: Andy P. <at...@us...> - 2002-04-09 16:29:14
|
Update of /cvsroot/linux-vax/kernel-2.4/net/x25
In directory usw-pr-cvs1:/tmp/cvs-serv32481/x25
Modified Files:
af_x25.c x25_link.c x25_out.c x25_subr.c
Log Message:
synch 2.4.15 commit 21
Index: af_x25.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/net/x25/af_x25.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- af_x25.c 25 Feb 2001 23:14:56 -0000 1.1.1.2
+++ af_x25.c 9 Apr 2002 16:29:02 -0000 1.2
@@ -407,8 +407,11 @@
return -ENOPROTOOPT;
}
- len = min(len, sizeof(int));
+ len = min_t(unsigned int, len, sizeof(int));
+ if (len < 0)
+ return -EINVAL;
+
if (put_user(len, optlen))
return -EFAULT;
@@ -912,7 +915,7 @@
size = len + X25_MAX_L2_LEN + X25_EXT_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;
X25_SKB_CB(skb)->flags = msg->msg_flags;
@@ -1283,6 +1286,7 @@
sendmsg: x25_sendmsg,
recvmsg: x25_recvmsg,
mmap: sock_no_mmap,
+ sendpage: sock_no_sendpage,
};
#include <linux/smp_lock.h>
Index: x25_link.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/net/x25/x25_link.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- x25_link.c 25 Feb 2001 23:14:56 -0000 1.1.1.2
+++ x25_link.c 9 Apr 2002 16:29:02 -0000 1.2
@@ -309,10 +309,8 @@
{
struct x25_neigh *s;
unsigned long flags;
- struct sk_buff *skb;
- while ((skb = skb_dequeue(&x25_neigh->queue)) != NULL)
- kfree_skb(skb);
+ skb_queue_purge(&x25_neigh->queue);
x25_stop_t20timer(x25_neigh);
Index: x25_out.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/net/x25/x25_out.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- x25_out.c 25 Feb 2001 23:14:56 -0000 1.1.1.2
+++ x25_out.c 9 Apr 2002 16:29:02 -0000 1.2
@@ -79,7 +79,7 @@
frontlen = skb_headroom(skb);
while (skb->len > 0) {
- if ((skbn = sock_alloc_send_skb(sk, frontlen + max_len, 0, noblock, &err)) == NULL){
+ if ((skbn = sock_alloc_send_skb(sk, frontlen + max_len, noblock, &err)) == NULL){
if(err == -EWOULDBLOCK && noblock){
kfree_skb(skb);
return sent;
Index: x25_subr.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/net/x25/x25_subr.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -r1.1.1.2 -r1.2
--- x25_subr.c 25 Feb 2001 23:14:56 -0000 1.1.1.2
+++ x25_subr.c 9 Apr 2002 16:29:02 -0000 1.2
@@ -17,6 +17,7 @@
* X.25 002 Jonathan Naylor Centralised disconnection processing.
* mar/20/00 Daniela Squassoni Disabling/enabling of facilities
* negotiation.
+ * jun/24/01 Arnaldo C. Melo use skb_queue_purge, cleanups
*/
#include <linux/errno.h>
@@ -45,22 +46,11 @@
*/
void x25_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.x25->ack_queue)) != NULL)
- kfree_skb(skb);
-
- while ((skb = skb_dequeue(&sk->protinfo.x25->interrupt_in_queue)) != NULL)
- kfree_skb(skb);
-
- while ((skb = skb_dequeue(&sk->protinfo.x25->interrupt_out_queue)) != NULL)
- kfree_skb(skb);
-
- while ((skb = skb_dequeue(&sk->protinfo.x25->fragment_queue)) != NULL)
- kfree_skb(skb);
+ skb_queue_purge(&sk->write_queue);
+ skb_queue_purge(&sk->protinfo.x25->ack_queue);
+ skb_queue_purge(&sk->protinfo.x25->interrupt_in_queue);
+ skb_queue_purge(&sk->protinfo.x25->interrupt_out_queue);
+ skb_queue_purge(&sk->protinfo.x25->fragment_queue);
}
@@ -72,20 +62,20 @@
void x25_frames_acked(struct sock *sk, unsigned short nr)
{
struct sk_buff *skb;
- int modulus;
-
- modulus = (sk->protinfo.x25->neighbour->extended) ? X25_EMODULUS : X25_SMODULUS;
+ int modulus = sk->protinfo.x25->neighbour->extended ? X25_EMODULUS :
+ X25_SMODULUS;
/*
* Remove all the ack-ed frames from the ack queue.
*/
- if (sk->protinfo.x25->va != nr) {
- while (skb_peek(&sk->protinfo.x25->ack_queue) != NULL && sk->protinfo.x25->va != nr) {
+ if (sk->protinfo.x25->va != nr)
+ while (skb_peek(&sk->protinfo.x25->ack_queue) != NULL &&
+ sk->protinfo.x25->va != nr) {
skb = skb_dequeue(&sk->protinfo.x25->ack_queue);
kfree_skb(skb);
- sk->protinfo.x25->va = (sk->protinfo.x25->va + 1) % modulus;
+ sk->protinfo.x25->va = (sk->protinfo.x25->va + 1) %
+ modulus;
}
- }
}
void x25_requeue_frames(struct sock *sk)
@@ -113,18 +103,15 @@
int x25_validate_nr(struct sock *sk, unsigned short nr)
{
unsigned short vc = sk->protinfo.x25->va;
- int modulus;
-
- modulus = (sk->protinfo.x25->neighbour->extended) ? X25_EMODULUS : X25_SMODULUS;
+ int modulus = sk->protinfo.x25->neighbour->extended ? X25_EMODULUS :
+ X25_SMODULUS;
while (vc != sk->protinfo.x25->vs) {
if (nr == vc) return 1;
vc = (vc + 1) % modulus;
}
- if (nr == sk->protinfo.x25->vs) return 1;
-
- return 0;
+ return nr == sk->protinfo.x25->vs ? 1 : 0;
}
/*
@@ -150,7 +137,8 @@
*/
switch (frametype) {
case X25_CALL_REQUEST:
- len += 1 + X25_ADDR_LEN + X25_MAX_FAC_LEN + X25_MAX_CUD_LEN;
+ len += 1 + X25_ADDR_LEN + X25_MAX_FAC_LEN +
+ X25_MAX_CUD_LEN;
break;
case X25_CALL_ACCEPTED:
len += 1 + X25_MAX_FAC_LEN + X25_MAX_CUD_LEN;
@@ -167,7 +155,8 @@
case X25_RESET_CONFIRMATION:
break;
default:
- printk(KERN_ERR "X.25: invalid frame type %02X\n", frametype);
+ printk(KERN_ERR "X.25: invalid frame type %02X\n",
+ frametype);
return;
}
@@ -262,11 +251,10 @@
/*
* Unpick the contents of the passed X.25 Packet Layer frame.
*/
-int x25_decode(struct sock *sk, struct sk_buff *skb, int *ns, int *nr, int *q, int *d, int *m)
+int x25_decode(struct sock *sk, struct sk_buff *skb, int *ns, int *nr, int *q,
+ int *d, int *m)
{
- unsigned char *frame;
-
- frame = skb->data;
+ unsigned char *frame = skb->data;
*ns = *nr = *q = *d = *m = 0;
@@ -323,12 +311,14 @@
}
}
- printk(KERN_DEBUG "X.25: invalid PLP frame %02X %02X %02X\n", frame[0], frame[1], frame[2]);
+ printk(KERN_DEBUG "X.25: invalid PLP frame %02X %02X %02X\n",
+ frame[0], frame[1], frame[2]);
return X25_ILLEGAL;
}
-void x25_disconnect(struct sock *sk, int reason, unsigned char cause, unsigned char diagnostic)
+void x25_disconnect(struct sock *sk, int reason, unsigned char cause,
+ unsigned char diagnostic)
{
x25_clear_queues(sk);
x25_stop_timer(sk);
|