]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/packet/af_packet.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy...
[karo-tx-linux.git] / net / packet / af_packet.c
index b4870a34c435a02d46b4e26651e5d0fcc1abfa25..5f94db2f3e9ed410e58f660f3ab3c0468e68ff92 100644 (file)
@@ -872,6 +872,7 @@ static int packet_release(struct socket *sock)
 
        write_lock_bh(&net->packet.sklist_lock);
        sk_del_node_init(sk);
+       sock_prot_inuse_add(net, sk->sk_prot, -1);
        write_unlock_bh(&net->packet.sklist_lock);
 
        /*
@@ -910,7 +911,6 @@ static int packet_release(struct socket *sock)
        skb_queue_purge(&sk->sk_receive_queue);
        sk_refcnt_debug_release(sk);
 
-       sock_prot_inuse_add(net, sk->sk_prot, -1);
        sock_put(sk);
        return 0;
 }
@@ -1085,8 +1085,8 @@ static int packet_create(struct net *net, struct socket *sock, int protocol)
 
        write_lock_bh(&net->packet.sklist_lock);
        sk_add_node(sk, &net->packet.sklist);
-       write_unlock_bh(&net->packet.sklist_lock);
        sock_prot_inuse_add(net, &packet_proto, 1);
+       write_unlock_bh(&net->packet.sklist_lock);
        return(0);
 out:
        return err;