Merge "net: sockev: avoid races between sockev and socket_close"
This commit is contained in:
commit
eddc389f5a
1 changed files with 6 additions and 2 deletions
|
@ -73,11 +73,13 @@ static int sockev_client_cb(struct notifier_block *nb,
|
||||||
|
|
||||||
sock = (struct socket *)data;
|
sock = (struct socket *)data;
|
||||||
if (!socknlmsgsk || !sock)
|
if (!socknlmsgsk || !sock)
|
||||||
goto done;
|
goto sk_null;
|
||||||
|
|
||||||
sk = sock->sk;
|
sk = sock->sk;
|
||||||
if (!sk)
|
if (!sk)
|
||||||
goto done;
|
goto sk_null;
|
||||||
|
|
||||||
|
sock_hold(sk);
|
||||||
|
|
||||||
if (sk->sk_family != AF_INET && sk->sk_family != AF_INET6)
|
if (sk->sk_family != AF_INET && sk->sk_family != AF_INET6)
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -108,6 +110,8 @@ static int sockev_client_cb(struct notifier_block *nb,
|
||||||
smsg->skflags = sk->sk_flags;
|
smsg->skflags = sk->sk_flags;
|
||||||
nlmsg_notify(socknlmsgsk, skb, 0, SKNLGRP_SOCKEV, 0, GFP_KERNEL);
|
nlmsg_notify(socknlmsgsk, skb, 0, SKNLGRP_SOCKEV, 0, GFP_KERNEL);
|
||||||
done:
|
done:
|
||||||
|
sock_put(sk);
|
||||||
|
sk_null:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue