The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Mazin Al Haddad <mazin@getstate.dev>,
	syzbot+479aff51bb361ef5aa18@syzkaller.appspotmail.com,
	Luiz Augusto von Dentz <luiz.von.dentz@intel.com>,
	Sasha Levin <sashal@kernel.org>,
	marcel@holtmann.org, johan.hedberg@gmail.com,
	luiz.dentz@gmail.com, linux-bluetooth@vger.kernel.org
Subject: [PATCH AUTOSEL 6.13 27/35] Bluetooth: MGMT: Fix slab-use-after-free Read in mgmt_remove_adv_monitor_sync
Date: Sun, 26 Jan 2025 10:00:21 -0500	[thread overview]
Message-ID: <20250126150029.953021-27-sashal@kernel.org> (raw)
In-Reply-To: <20250126150029.953021-1-sashal@kernel.org>

From: Mazin Al Haddad <mazin@getstate.dev>

[ Upstream commit 26fbd3494a7dd26269cb0817c289267dbcfdec06 ]

This fixes the following crash:

==================================================================
BUG: KASAN: slab-use-after-free in mgmt_remove_adv_monitor_sync+0x3a/0xd0 net/bluetooth/mgmt.c:5543
Read of size 8 at addr ffff88814128f898 by task kworker/u9:4/5961

CPU: 1 UID: 0 PID: 5961 Comm: kworker/u9:4 Not tainted 6.12.0-syzkaller-10684-gf1cd565ce577 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
Workqueue: hci0 hci_cmd_sync_work
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:94 [inline]
 dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
 print_address_description mm/kasan/report.c:378 [inline]
 print_report+0x169/0x550 mm/kasan/report.c:489
 kasan_report+0x143/0x180 mm/kasan/report.c:602
 mgmt_remove_adv_monitor_sync+0x3a/0xd0 net/bluetooth/mgmt.c:5543
 hci_cmd_sync_work+0x22b/0x400 net/bluetooth/hci_sync.c:332
 process_one_work kernel/workqueue.c:3229 [inline]
 process_scheduled_works+0xa63/0x1850 kernel/workqueue.c:3310
 worker_thread+0x870/0xd30 kernel/workqueue.c:3391
 kthread+0x2f0/0x390 kernel/kthread.c:389
 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 </TASK>

Allocated by task 16026:
 kasan_save_stack mm/kasan/common.c:47 [inline]
 kasan_save_track+0x3f/0x80 mm/kasan/common.c:68
 poison_kmalloc_redzone mm/kasan/common.c:377 [inline]
 __kasan_kmalloc+0x98/0xb0 mm/kasan/common.c:394
 kasan_kmalloc include/linux/kasan.h:260 [inline]
 __kmalloc_cache_noprof+0x243/0x390 mm/slub.c:4314
 kmalloc_noprof include/linux/slab.h:901 [inline]
 kzalloc_noprof include/linux/slab.h:1037 [inline]
 mgmt_pending_new+0x65/0x250 net/bluetooth/mgmt_util.c:269
 mgmt_pending_add+0x36/0x120 net/bluetooth/mgmt_util.c:296
 remove_adv_monitor+0x102/0x1b0 net/bluetooth/mgmt.c:5568
 hci_mgmt_cmd+0xc47/0x11d0 net/bluetooth/hci_sock.c:1712
 hci_sock_sendmsg+0x7b8/0x11c0 net/bluetooth/hci_sock.c:1832
 sock_sendmsg_nosec net/socket.c:711 [inline]
 __sock_sendmsg+0x221/0x270 net/socket.c:726
 sock_write_iter+0x2d7/0x3f0 net/socket.c:1147
 new_sync_write fs/read_write.c:586 [inline]
 vfs_write+0xaeb/0xd30 fs/read_write.c:679
 ksys_write+0x18f/0x2b0 fs/read_write.c:731
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

Freed by task 16022:
 kasan_save_stack mm/kasan/common.c:47 [inline]
 kasan_save_track+0x3f/0x80 mm/kasan/common.c:68
 kasan_save_free_info+0x40/0x50 mm/kasan/generic.c:582
 poison_slab_object mm/kasan/common.c:247 [inline]
 __kasan_slab_free+0x59/0x70 mm/kasan/common.c:264
 kasan_slab_free include/linux/kasan.h:233 [inline]
 slab_free_hook mm/slub.c:2338 [inline]
 slab_free mm/slub.c:4598 [inline]
 kfree+0x196/0x420 mm/slub.c:4746
 mgmt_pending_foreach+0xd1/0x130 net/bluetooth/mgmt_util.c:259
 __mgmt_power_off+0x183/0x430 net/bluetooth/mgmt.c:9550
 hci_dev_close_sync+0x6c4/0x11c0 net/bluetooth/hci_sync.c:5208
 hci_dev_do_close net/bluetooth/hci_core.c:483 [inline]
 hci_dev_close+0x112/0x210 net/bluetooth/hci_core.c:508
 sock_do_ioctl+0x158/0x460 net/socket.c:1209
 sock_ioctl+0x626/0x8e0 net/socket.c:1328
 vfs_ioctl fs/ioctl.c:51 [inline]
 __do_sys_ioctl fs/ioctl.c:906 [inline]
 __se_sys_ioctl+0xf5/0x170 fs/ioctl.c:892
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

Reported-by: syzbot+479aff51bb361ef5aa18@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=479aff51bb361ef5aa18
Tested-by: syzbot+479aff51bb361ef5aa18@syzkaller.appspotmail.com
Signed-off-by: Mazin Al Haddad <mazin@getstate.dev>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/bluetooth/mgmt.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index de47ad999d7b6..71dda10f6a24f 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -5519,10 +5519,16 @@ static void mgmt_remove_adv_monitor_complete(struct hci_dev *hdev,
 {
 	struct mgmt_rp_remove_adv_monitor rp;
 	struct mgmt_pending_cmd *cmd = data;
-	struct mgmt_cp_remove_adv_monitor *cp = cmd->param;
+	struct mgmt_cp_remove_adv_monitor *cp;
+
+	if (status == -ECANCELED ||
+	    cmd != pending_find(MGMT_OP_REMOVE_ADV_MONITOR, hdev))
+		return;
 
 	hci_dev_lock(hdev);
 
+	cp = cmd->param;
+
 	rp.monitor_handle = cp->monitor_handle;
 
 	if (!status)
@@ -5540,6 +5546,10 @@ static void mgmt_remove_adv_monitor_complete(struct hci_dev *hdev,
 static int mgmt_remove_adv_monitor_sync(struct hci_dev *hdev, void *data)
 {
 	struct mgmt_pending_cmd *cmd = data;
+
+	if (cmd != pending_find(MGMT_OP_REMOVE_ADV_MONITOR, hdev))
+		return -ECANCELED;
+
 	struct mgmt_cp_remove_adv_monitor *cp = cmd->param;
 	u16 handle = __le16_to_cpu(cp->monitor_handle);
 
-- 
2.39.5


  parent reply	other threads:[~2025-01-26 15:01 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-26 14:59 [PATCH AUTOSEL 6.13 01/35] wifi: ath12k: Fix for out-of bound access error Sasha Levin
2025-01-26 14:59 ` [PATCH AUTOSEL 6.13 02/35] wifi: ath12k: ath12k_mac_op_set_key(): fix uninitialized symbol 'ret' Sasha Levin
2025-01-26 14:59 ` [PATCH AUTOSEL 6.13 03/35] wifi: rtw89: add crystal_cap check to avoid setting as overflow value Sasha Levin
2025-01-26 14:59 ` [PATCH AUTOSEL 6.13 04/35] tun: fix group permission check Sasha Levin
2025-01-26 14:59 ` [PATCH AUTOSEL 6.13 05/35] mmc: core: Respect quirk_max_rate for non-UHS SDIO card Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 06/35] mmc: sdhci-esdhc-imx: enable 'SDHCI_QUIRK_NO_LED' quirk for S32G Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 07/35] Revert "HID: multitouch: Add support for lenovo Y9000P Touchpad" Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 08/35] wifi: brcmsmac: add gain range check to wlc_phy_iqcal_gainparams_nphy() Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 09/35] tomoyo: don't emit warning in tomoyo_write_control() Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 10/35] mfd: lpc_ich: Add another Gemini Lake ISA bridge PCI device-id Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 11/35] wifi: rtw88: add __packed attribute to efuse layout struct Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 12/35] clk: qcom: Make GCC_8150 depend on QCOM_GDSC Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 13/35] net/mlx5: HWS, change error flow on matcher disconnect Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 14/35] net/mlx5: HWS, num_of_rules counter on matcher should be atomic Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 15/35] HID: multitouch: Add quirk for Hantick 5288 touchpad Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 16/35] HID: Wacom: Add PCI Wacom device support Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 17/35] net/mlx5: use do_aux_work for PHC overflow checks Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 18/35] Revert "mfd: axp20x: Allow multiple regulators" Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 19/35] wifi: brcmfmac: Check the return value of of_property_read_string_index() Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 20/35] wifi: iwlwifi: pcie: Add support for new device ids Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 21/35] wifi: iwlwifi: avoid memory leak Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 22/35] i2c: Force ELAN06FA touchpad I2C bus freq to 100KHz Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 23/35] APEI: GHES: Have GHES honor the panic= setting Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 24/35] Bluetooth: btusb: Add ID 0x2c7c:0x0130 for Qualcomm WCN785x Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 25/35] Bluetooth: btusb: Add new VID/PID 13d3/3610 for MT7922 Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 26/35] Bluetooth: btusb: Add new VID/PID 13d3/3628 for MT7925 Sasha Levin
2025-01-26 15:00 ` Sasha Levin [this message]
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 28/35] net: wwan: iosm: Fix hibernation by re-binding the driver around it Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 29/35] HID: hid-asus: Disable OOBE mode on the ProArt P16 Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 30/35] mmc: sdhci-msm: Correctly set the load for the regulator Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 31/35] octeon_ep: update tx/rx stats locally for persistence Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 32/35] octeon_ep_vf: " Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 33/35] tipc: re-order conditions in tipc_crypto_key_rcv() Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 34/35] selftests/net/ipsec: Fix Null pointer dereference in rtattr_pack() Sasha Levin
2025-01-26 15:00 ` [PATCH AUTOSEL 6.13 35/35] net: ethernet: ti: am65-cpsw: ensure proper channel cleanup in error path Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250126150029.953021-27-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=johan.hedberg@gmail.com \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luiz.dentz@gmail.com \
    --cc=luiz.von.dentz@intel.com \
    --cc=marcel@holtmann.org \
    --cc=mazin@getstate.dev \
    --cc=stable@vger.kernel.org \
    --cc=syzbot+479aff51bb361ef5aa18@syzkaller.appspotmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox