From da88fafff9d379ff24c0df86f218ff9a72c84b28 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Sun, 23 Nov 2008 17:34:03 -0800 Subject: [PATCH] --- yaml --- r: 122109 b: refs/heads/master c: 6f756a8c36bf54d0afb1d457082b3e3033d951a7 h: refs/heads/master i: 122107: 37c20c1fd63c3ee1284bcdf3923a5d3c75b20e31 v: v3 --- [refs] | 2 +- trunk/net/netlink/af_netlink.c | 3 +++ trunk/net/sctp/socket.c | 4 ++++ trunk/net/unix/af_unix.c | 2 ++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 14e63c3d0c74..9af9d0e918d7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: be77e5930725c3e77bcc0fb1def28e016080d0a1 +refs/heads/master: 6f756a8c36bf54d0afb1d457082b3e3033d951a7 diff --git a/trunk/net/netlink/af_netlink.c b/trunk/net/netlink/af_netlink.c index a2071dcfe9e8..c7d76579bf3c 100644 --- a/trunk/net/netlink/af_netlink.c +++ b/trunk/net/netlink/af_netlink.c @@ -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: diff --git a/trunk/net/sctp/socket.c b/trunk/net/sctp/socket.c index 0c70eff0b757..f03af84edf63 100644 --- a/trunk/net/sctp/socket.c +++ b/trunk/net/sctp/socket.c @@ -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; } diff --git a/trunk/net/unix/af_unix.c b/trunk/net/unix/af_unix.c index e1ca8f744ca5..a45a9f7369ed 100644 --- a/trunk/net/unix/af_unix.c +++ b/trunk/net/unix/af_unix.c @@ -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));