Subject: Re: [PATCH 3/3] [UDP6]: Counter increment on BH mode

From: Wang Chen <[email-masked]>
Date: Mon, 03 Dec 2007 15:19:35 +0800

Herbert Xu said the following on 2007-12-1 9:54:
> On Fri, Nov 30, 2007 at 11:19:49AM +0000, Gerrit Renker wrote:
>> |  csum_copy_err:
>> | -	UDP6_INC_STATS_USER(UDP_MIB_INERRORS, is_udplite);
>> | +	UDP6_INC_STATS_BH(UDP_MIB_INERRORS, is_udplite);
>> |  	skb_kill_datagram(sk, skb, flags);
>> |  
>> |  	if (flags & MSG_DONTWAIT)
>> | 
>> Is it not the other way round ?? :- 
> 
> I agree.  Wang Chen, please change this and other appropriate
> BH calls to USER.  Basically recvmsg should always be USER while
> rcv is BH.
> 

Resubmit the patch.

System calls should be USER. So change the BH to USER for
UDP*_INC_STATS_BH().

Signed-off-by: Wang Chen <[email-masked]>
---
 ipv4/udp.c |    4 ++--
 ipv6/udp.c |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

--- linux-2.6.24.rc3.org/net/ipv4/udp.c	2007-12-03 15:10:49.000000000 +0800
+++ linux-2.6.24.rc3/net/ipv4/udp.c	2007-12-03 14:52:54.000000000 +0800
@@ -874,7 +874,7 @@ try_again:
 	if (err)
 		goto out_free;
 
-	UDP_INC_STATS_BH(UDP_MIB_INDATAGRAMS, is_udplite);
+	UDP_INC_STATS_USER(UDP_MIB_INDATAGRAMS, is_udplite);
 
 	sock_recv_timestamp(msg, sk, skb);
 
@@ -899,7 +899,7 @@ out:
 	return err;
 
 csum_copy_err:
-	UDP_INC_STATS_BH(UDP_MIB_INERRORS, is_udplite);
+	UDP_INC_STATS_USER(UDP_MIB_INERRORS, is_udplite);
 
 	skb_kill_datagram(sk, skb, flags);
 
--- linux-2.6.24.rc3.org/net/ipv6/udp.c	2007-12-03 15:10:49.000000000 +0800
+++ linux-2.6.24.rc3/net/ipv6/udp.c	2007-12-03 15:09:55.000000000 +0800
@@ -164,7 +164,7 @@ try_again:
 	if (err)
 		goto out_free;
 
-	UDP6_INC_STATS_BH(UDP_MIB_INDATAGRAMS, is_udplite);
+	UDP6_INC_STATS_USER(UDP_MIB_INDATAGRAMS, is_udplite);
 
 	sock_recv_timestamp(msg, sk, skb);