]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
Bluetooth: msft: fix slab-use-after-free in msft_do_close()
authorSungwoo Kim <iam@sung-woo.kim>
Tue, 30 Apr 2024 16:20:51 +0000 (12:20 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 May 2024 10:02:21 +0000 (12:02 +0200)
commita85a60e62355e3bf4802dead7938966824b23940
tree62a8534e5976709aa9e9e2a43538ca82e2da2523
parent012363cb1bec5f33a7b94629ab2c1086f30280f2
Bluetooth: msft: fix slab-use-after-free in msft_do_close()

[ Upstream commit 10f9f426ac6e752c8d87bf4346930ba347aaabac ]

Tying the msft->data lifetime to hdev by freeing it in
hci_release_dev() to fix the following case:

[use]
msft_do_close()
  msft = hdev->msft_data;
  if (!msft)                      ...(1) <- passed.
    return;
  mutex_lock(&msft->filter_lock); ...(4) <- used after freed.

[free]
msft_unregister()
  msft = hdev->msft_data;
  hdev->msft_data = NULL;         ...(2)
  kfree(msft);                    ...(3) <- msft is freed.

==================================================================
BUG: KASAN: slab-use-after-free in __mutex_lock_common
kernel/locking/mutex.c:587 [inline]
BUG: KASAN: slab-use-after-free in __mutex_lock+0x8f/0xc30
kernel/locking/mutex.c:752
Read of size 8 at addr ffff888106cbbca8 by task kworker/u5:2/309

Fixes: bf6a4e30ffbd ("Bluetooth: disable advertisement filters during suspend")
Signed-off-by: Sungwoo Kim <iam@sung-woo.kim>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/bluetooth/hci_core.c
net/bluetooth/msft.c
net/bluetooth/msft.h