diff options
Diffstat (limited to 'net/packet/af_packet.c')
-rw-r--r-- | net/packet/af_packet.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index b4870a34c435..5f94db2f3e9e 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); |
1091 | out: | 1091 | out: |
1092 | return err; | 1092 | return err; |