Skip to content

Commit

Permalink
net: Make sure BHs are disabled in sock_prot_inuse_add()
Browse files Browse the repository at this point in the history
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.

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Nov 24, 2008
1 parent be77e59 commit 6f756a8
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 0 deletions.
3 changes: 3 additions & 0 deletions net/netlink/af_netlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -452,7 +452,10 @@ static int netlink_create(struct net *net, struct socket *sock, int protocol)
if (err < 0)
goto out_module;

local_bh_disable();
sock_prot_inuse_add(net, &netlink_proto, 1);
local_bh_enable();

nlk = nlk_sk(sock->sk);
nlk->module = module;
out:
Expand Down
4 changes: 4 additions & 0 deletions net/sctp/socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -3614,7 +3614,11 @@ SCTP_STATIC int sctp_init_sock(struct sock *sk)

SCTP_DBG_OBJCNT_INC(sock);
atomic_inc(&sctp_sockets_allocated);

local_bh_disable();
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1);
local_bh_enable();

return 0;
}

Expand Down
2 changes: 2 additions & 0 deletions net/unix/af_unix.c
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,9 @@ static void unix_sock_destructor(struct sock *sk)
unix_release_addr(u->addr);

atomic_dec(&unix_nr_socks);
local_bh_disable();
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1);
local_bh_enable();
#ifdef UNIX_REFCNT_DEBUG
printk(KERN_DEBUG "UNIX %p is destroyed, %d are still alive.\n", sk,
atomic_read(&unix_nr_socks));
Expand Down

0 comments on commit 6f756a8

Please sign in to comment.