aboutsummaryrefslogtreecommitdiffstats
path: root/net/packet/af_packet.c
diff options
context:
space:
mode:
authorEric Dumazet <dada1@cosmosbay.com>2008-11-24 03:09:29 -0500
committerDavid S. Miller <davem@davemloft.net>2008-11-24 03:09:29 -0500
commit920de804bca61f88643bc9171bcd06f1a56c6258 (patch)
treefb4c90b4b167a4b7518ea888e99bfd18a7d301fb /net/packet/af_packet.c
parent1f87e235e6fb92c2968b52b9191de04f1aff8e77 (diff)
net: Make sure BHs are disabled in sock_prot_inuse_add()
The rule of calling sock_prot_inuse_add() is that BHs must be disabled. Some new calls were added where this was not true and this tiggers warnings as reported by Ilpo. Fix this by adding explicit BH disabling around those call sites, or moving sock_prot_inuse_add() call inside an existing BH disabled section. Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/packet/af_packet.c')
-rw-r--r--net/packet/af_packet.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index b4870a34c43..5f94db2f3e9 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -872,6 +872,7 @@ static int packet_release(struct socket *sock)
872 872
873 write_lock_bh(&net->packet.sklist_lock); 873 write_lock_bh(&net->packet.sklist_lock);
874 sk_del_node_init(sk); 874 sk_del_node_init(sk);
875 sock_prot_inuse_add(net, sk->sk_prot, -1);
875 write_unlock_bh(&net->packet.sklist_lock); 876 write_unlock_bh(&net->packet.sklist_lock);
876 877
877 /* 878 /*
@@ -910,7 +911,6 @@ static int packet_release(struct socket *sock)
910 skb_queue_purge(&sk->sk_receive_queue); 911 skb_queue_purge(&sk->sk_receive_queue);
911 sk_refcnt_debug_release(sk); 912 sk_refcnt_debug_release(sk);
912 913
913 sock_prot_inuse_add(net, sk->sk_prot, -1);
914 sock_put(sk); 914 sock_put(sk);
915 return 0; 915 return 0;
916} 916}
@@ -1085,8 +1085,8 @@ static int packet_create(struct net *net, struct socket *sock, int protocol)
1085 1085
1086 write_lock_bh(&net->packet.sklist_lock); 1086 write_lock_bh(&net->packet.sklist_lock);
1087 sk_add_node(sk, &net->packet.sklist); 1087 sk_add_node(sk, &net->packet.sklist);
1088 write_unlock_bh(&net->packet.sklist_lock);
1089 sock_prot_inuse_add(net, &packet_proto, 1); 1088 sock_prot_inuse_add(net, &packet_proto, 1);
1089 write_unlock_bh(&net->packet.sklist_lock);
1090 return(0); 1090 return(0);
1091out: 1091out:
1092 return err; 1092 return err;