]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commit
nl80211: fix dumpit error path RTNL deadlocks
authorJohannes Berg <johannes.berg@intel.com>
Wed, 15 Mar 2017 13:26:04 +0000 (14:26 +0100)
committerTim Gardner <tim.gardner@canonical.com>
Thu, 30 Mar 2017 12:35:45 +0000 (06:35 -0600)
commitff4cc4d94cc8eebe93d8c5b5184249f27242e91d
treec5af940c325766a5cc70e1a648e072ad224aff0c
parent2d94c15b8b2b1fd1b819cc80d97687690fb0dc16
nl80211: fix dumpit error path RTNL deadlocks

BugLink: http://bugs.launchpad.net/bugs/1677589
commit ea90e0dc8cecba6359b481e24d9c37160f6f524f upstream.

Sowmini pointed out Dmitry's RTNL deadlock report to me, and it turns out
to be perfectly accurate - there are various error paths that miss unlock
of the RTNL.

To fix those, change the locking a bit to not be conditional in all those
nl80211_prepare_*_dump() functions, but make those require the RTNL to
start with, and fix the buggy error paths. This also let me use sparse
(by appropriately overriding the rtnl_lock/rtnl_unlock functions) to
validate the changes.

Reported-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Reported-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
net/wireless/nl80211.c