patch-2.1.119 linux/net/ipv4/udp.c

Next file: linux/net/ipv6/raw.c
Previous file: linux/net/ipv4/timer.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.118/linux/net/ipv4/udp.c linux/net/ipv4/udp.c
@@ -493,7 +493,7 @@
     	  	return;	/* No socket for error */
 	}
 
-	if (sk->ip_recverr && !sk->sock_readers) {
+	if (sk->ip_recverr && !atomic_read(&sk->sock_readers)) {
 		struct sk_buff *skb2 = skb_clone(skb, GFP_ATOMIC);
 		if (skb2 && sock_queue_err_skb(sk, skb2))
 			kfree_skb(skb2);
@@ -1026,7 +1026,7 @@
 
 static inline void udp_deliver(struct sock *sk, struct sk_buff *skb)
 {
-	if (sk->sock_readers) {
+	if (atomic_read(&sk->sock_readers)) {
 		__skb_queue_tail(&sk->back_log, skb);
 		return;
 	}

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov