diff options
Diffstat (limited to 'net/netlink/af_netlink.c')
-rw-r--r-- | net/netlink/af_netlink.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 480184a857d2..9eb895c7a2a9 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c | |||
@@ -452,6 +452,10 @@ static int netlink_create(struct net *net, struct socket *sock, int protocol) | |||
452 | if (err < 0) | 452 | if (err < 0) |
453 | goto out_module; | 453 | goto out_module; |
454 | 454 | ||
455 | local_bh_disable(); | ||
456 | sock_prot_inuse_add(net, &netlink_proto, 1); | ||
457 | local_bh_enable(); | ||
458 | |||
455 | nlk = nlk_sk(sock->sk); | 459 | nlk = nlk_sk(sock->sk); |
456 | nlk->module = module; | 460 | nlk->module = module; |
457 | out: | 461 | out: |
@@ -511,6 +515,9 @@ static int netlink_release(struct socket *sock) | |||
511 | kfree(nlk->groups); | 515 | kfree(nlk->groups); |
512 | nlk->groups = NULL; | 516 | nlk->groups = NULL; |
513 | 517 | ||
518 | local_bh_disable(); | ||
519 | sock_prot_inuse_add(sock_net(sk), &netlink_proto, -1); | ||
520 | local_bh_enable(); | ||
514 | sock_put(sk); | 521 | sock_put(sk); |
515 | return 0; | 522 | return 0; |
516 | } | 523 | } |