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); |