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)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 30 Aug 2021 14:47:31 +0000 (16:47 +0200)
commit99c23da0eed4fd20cae8243f2b51e10e66aa0951
tree7d3899f8d325e3f7f8d5cddc7b5f200142288da0
parent927ac8da35db763fe22d338614777120fcfade70
Bluetooth: sco: Fix lock_sock() blockage by memcpy_from_msg()

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>
net/bluetooth/sco.c