Bluetooth: sco: Fix lock_sock() blockage by memcpy_from_msg()
authorTakashi Iwai <tiwai@suse.de>
Sat, 28 Aug 2021 16:18:18 +0000 (18:18 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Nov 2021 18:16:09 +0000 (19:16 +0100)
commitb990c219c4c9d4993ef65ea9db73d9497e70f697
tree1b32803da1deae6c88050d9d5905a952052b31cd
parent8815bbe712f3eeecf8e6bdf0ac21ac6a3f1727fb
Bluetooth: sco: Fix lock_sock() blockage by memcpy_from_msg()

[ Upstream commit 99c23da0eed4fd20cae8243f2b51e10e66aa0951 ]

The sco_send_frame() also takes lock_sock() during memcpy_from_msg()
call that may be endlessly blocked by a task with userfaultd
technique, and this will result in a hung task watchdog trigger.

Just like the similar fix for hci_sock_sendmsg() in commit
92c685dc5de0 ("Bluetooth: reorganize functions..."), this patch moves
the  memcpy_from_msg() out of lock_sock() for addressing the hang.

This should be the last piece for fixing CVE-2021-3640 after a few
already queued fixes.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/bluetooth/sco.c