]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/packet/af_packet.c
Merge branch 'next' into for-linus
[karo-tx-linux.git] / net / packet / af_packet.c
index d56cae112dc83b4223b28924f508b426a02c0594..5f94db2f3e9ed410e58f660f3ab3c0468e68ff92 100644 (file)
@@ -260,8 +260,8 @@ static inline struct packet_sock *pkt_sk(struct sock *sk)
 
 static void packet_sock_destruct(struct sock *sk)
 {
-       BUG_TRAP(!atomic_read(&sk->sk_rmem_alloc));
-       BUG_TRAP(!atomic_read(&sk->sk_wmem_alloc));
+       WARN_ON(atomic_read(&sk->sk_rmem_alloc));
+       WARN_ON(atomic_read(&sk->sk_wmem_alloc));
 
        if (!sock_flag(sk, SOCK_DEAD)) {
                printk("Attempt to release alive packet socket: %p\n", sk);
@@ -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);
 
        /*
@@ -1084,6 +1085,7 @@ 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);
+       sock_prot_inuse_add(net, &packet_proto, 1);
        write_unlock_bh(&net->packet.sklist_lock);
        return(0);
 out: