]> git.baikalelectronics.ru Git - kernel.git/commit
netlink: don't send NETLINK_URELEASE for unbound sockets
authorDmitry Ivanov <dmitrijs.ivanovs@ubnt.com>
Thu, 7 Apr 2016 07:31:38 +0000 (09:31 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 11 Apr 2016 03:32:23 +0000 (23:32 -0400)
commit3be78e4de99d72f9f33b458d5e3c4dacbc8e4aa8
tree37e3912098f0469db24edac0c62c83e78bd40ce3
parent8b536770068bcc78408a78be6b294412e572c7cf
netlink: don't send NETLINK_URELEASE for unbound sockets

All existing users of NETLINK_URELEASE use it to clean up resources that
were previously allocated to a socket via some command. As a result, no
users require getting this notification for unbound sockets.

Sending it for unbound sockets, however, is a problem because any user
(including unprivileged users) can create a socket that uses the same ID
as an existing socket. Binding this new socket will fail, but if the
NETLINK_URELEASE notification is generated for such sockets, the users
thereof will be tricked into thinking the socket that they allocated the
resources for is closed.

In the nl80211 case, this will cause destruction of virtual interfaces
that still belong to an existing hostapd process; this is the case that
Dmitry noticed. In the NFC case, it will cause a poll abort. In the case
of netlink log/queue it will cause them to stop reporting events, as if
NFULNL_CFG_CMD_UNBIND/NFQNL_CFG_CMD_UNBIND had been called.

Fix this problem by checking that the socket is bound before generating
the NETLINK_URELEASE notification.

Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Ivanov <dima@ubnt.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/netlink/af_netlink.c