netlink: call unbind when releasing socket
Currently, netlink_unbind() is only called when the socket explicitly unbinds, which limits its usefulness (luckily there are no users of it yet anyway.) Call netlink_unbind() also when a socket is released, so it becomes possible to track listeners with this callback and without also implementing a netlink notifier (and checking netlink_has_listeners() in there.) Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b10dcb3b94
commit
7d68536bed
|
@ -1246,6 +1246,13 @@ static int netlink_release(struct socket *sock)
|
||||||
netlink_table_ungrab();
|
netlink_table_ungrab();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (nlk->netlink_unbind) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < nlk->ngroups; i++)
|
||||||
|
if (test_bit(i, nlk->groups))
|
||||||
|
nlk->netlink_unbind(i + 1);
|
||||||
|
}
|
||||||
kfree(nlk->groups);
|
kfree(nlk->groups);
|
||||||
nlk->groups = NULL;
|
nlk->groups = NULL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue