netrom: fix locking in nr_find_socket()
commitaa9f3a0f2b5dd9b567d43f2a3ffe67aa0b667dff
authorCong Wang <xiyou.wangcong@gmail.com>
Sat, 29 Dec 2018 21:56:38 +0000 (29 13:56 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 9 Jan 2019 15:16:40 +0000 (9 16:16 +0100)
tree00aadeb217b90c0c60a4e0b90bf549e4fdd9ebf1
parent99519a6d546c61dc3c7fb75c8d936f3b665f9e43
netrom: fix locking in nr_find_socket()

[ Upstream commit 7314f5480f3e37e570104dc5e0f28823ef849e72 ]

nr_find_socket(), nr_find_peer() and nr_find_listener() lock the
sock after finding it in the global list. However, the call path
requires BH disabled for the sock lock consistently.

Actually the locking is unnecessary at this point, we can just hold
the sock refcnt to make sure it is not gone after we unlock the global
list, and lock it later only when needed.

Reported-and-tested-by: syzbot+f621cda8b7e598908efa@syzkaller.appspotmail.com
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/netrom/af_netrom.c