* [syzbot] [bluetooth?] WARNING in hci_conn_del
@ 2024-02-28 4:53 syzbot
2024-06-13 21:15 ` [syzbot] " syzbot
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: syzbot @ 2024-02-28 4:53 UTC (permalink / raw)
To: davem, edumazet, johan.hedberg, kuba, linux-bluetooth,
linux-kernel, luiz.dentz, luiz.von.dentz, marcel, netdev, pabeni,
syzkaller-bugs, william.xuanziyang
Hello,
syzbot found the following issue on:
HEAD commit: 603c04e27c3e Merge tag 'parisc-for-6.8-rc6' of git://git.k..
git tree: upstream
console+strace: https://syzkaller.appspot.com/x/log.txt?x=12d065aa180000
kernel config: https://syzkaller.appspot.com/x/.config?x=eff9f3183d0a20dd
dashboard link: https://syzkaller.appspot.com/bug?extid=b2545b087a01a7319474
compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=17960122180000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=15d70222180000
Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/ffe1f52b2e32/disk-603c04e2.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/76775e0b335d/vmlinux-603c04e2.xz
kernel image: https://storage.googleapis.com/syzbot-assets/8cd3c1c87eef/bzImage-603c04e2.xz
The issue was bisected to:
commit 181a42edddf51d5d9697ecdf365d72ebeab5afb0
Author: Ziyang Xuan <william.xuanziyang@huawei.com>
Date: Wed Oct 11 09:57:31 2023 +0000
Bluetooth: Make handle of hci_conn be unique
bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=1357945c180000
final oops: https://syzkaller.appspot.com/x/report.txt?x=10d7945c180000
console output: https://syzkaller.appspot.com/x/log.txt?x=1757945c180000
IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+b2545b087a01a7319474@syzkaller.appspotmail.com
Fixes: 181a42edddf5 ("Bluetooth: Make handle of hci_conn be unique")
------------[ cut here ]------------
ida_free called for id=8192 which is not allocated.
WARNING: CPU: 1 PID: 5074 at lib/idr.c:525 ida_free+0x370/0x420 lib/idr.c:525
Modules linked in:
CPU: 1 PID: 5074 Comm: syz-executor104 Not tainted 6.8.0-rc5-syzkaller-00278-g603c04e27c3e #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/25/2024
RIP: 0010:ida_free+0x370/0x420 lib/idr.c:525
Code: 10 42 80 3c 28 00 74 05 e8 8d 4b 9b f6 48 8b 7c 24 40 4c 89 fe e8 a0 89 17 00 90 48 c7 c7 80 cd c5 8c 89 de e8 21 32 fd f5 90 <0f> 0b 90 90 eb 3d e8 45 27 39 f6 49 bd 00 00 00 00 00 fc ff df 4d
RSP: 0018:ffffc900039ef920 EFLAGS: 00010246
RAX: 59cbf4b1e8f11a00 RBX: 0000000000002000 RCX: ffff88802da20000
RDX: 0000000000000000 RSI: 0000000000000001 RDI: 0000000000000000
RBP: ffffc900039efa18 R08: ffffffff81577ab2 R09: 1ffff110172a51a2
R10: dffffc0000000000 R11: ffffed10172a51a3 R12: ffffc900039ef960
R13: dffffc0000000000 R14: ffff88801e3ec0a0 R15: 0000000000000246
FS: 0000000000000000(0000) GS:ffff8880b9500000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f78fc079f08 CR3: 000000002db8e000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
hci_conn_cleanup net/bluetooth/hci_conn.c:157 [inline]
hci_conn_del+0x7c0/0xcb0 net/bluetooth/hci_conn.c:1188
hci_conn_hash_flush+0x18e/0x240 net/bluetooth/hci_conn.c:2646
hci_dev_close_sync+0x9ab/0xff0 net/bluetooth/hci_sync.c:4954
hci_dev_do_close net/bluetooth/hci_core.c:554 [inline]
hci_unregister_dev+0x1e3/0x4e0 net/bluetooth/hci_core.c:2739
vhci_release+0x83/0xd0 drivers/bluetooth/hci_vhci.c:674
__fput+0x429/0x8a0 fs/file_table.c:376
task_work_run+0x24e/0x310 kernel/task_work.c:180
exit_task_work include/linux/task_work.h:38 [inline]
do_exit+0xa2c/0x2740 kernel/exit.c:871
do_group_exit+0x206/0x2c0 kernel/exit.c:1020
__do_sys_exit_group kernel/exit.c:1031 [inline]
__se_sys_exit_group kernel/exit.c:1029 [inline]
__x64_sys_exit_group+0x3f/0x40 kernel/exit.c:1029
do_syscall_64+0xf9/0x240
entry_SYSCALL_64_after_hwframe+0x6f/0x77
RIP: 0033:0x7f78fc021449
Code: Unable to access opcode bytes at 0x7f78fc02141f.
RSP: 002b:00007ffd8ebe2238 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f78fc021449
RDX: 000000000000003c RSI: 00000000000000e7 RDI: 0000000000000001
RBP: 00007f78fc0ad2b0 R08: ffffffffffffffb0 R09: 000000ff00ff4650
R10: 0000000000000000 R11: 0000000000000246 R12: 00007f78fc0ad2b0
R13: 0000000000000000 R14: 00007f78fc0add00 R15: 00007f78fbfef4e0
</TASK>
---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@googlegroups.com.
syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
For information about bisection process see: https://goo.gl/tpsmEJ#bisection
If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title
If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.
If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)
If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report
If you want to undo deduplication, reply with:
#syz undup
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [syzbot] Re: WARNING in hci_conn_del 2024-02-28 4:53 [syzbot] [bluetooth?] WARNING in hci_conn_del syzbot @ 2024-06-13 21:15 ` syzbot 2024-06-16 10:14 ` [syzbot] [bluetooth?] " Edward Adam Davis 2024-06-16 10:20 ` [PATCH] bluetooth: handle value within the ida range should not be handled in BIG Edward Adam Davis 2 siblings, 0 replies; 12+ messages in thread From: syzbot @ 2024-06-13 21:15 UTC (permalink / raw) To: linux-kernel For archival purposes, forwarding an incoming command email to linux-kernel@vger.kernel.org. *** Subject: Re: WARNING in hci_conn_del Author: paskripkin@gmail.com > Hello, > > syzbot found the following issue on: > > HEAD commit: 603c04e27c3e Merge tag 'parisc-for-6.8-rc6' of git://git.k.. > git tree: upstream > console+strace: https://syzkaller.appspot.com/x/log.txt?x=12d065aa180000 > kernel config: https://syzkaller.appspot.com/x/.config?x=eff9f3183d0a20dd > dashboard link: https://syzkaller.appspot.com/bug?extid=b2545b087a01a7319474 > compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40 > syz repro: https://syzkaller.appspot.com/x/repro.syz?x=17960122180000 > C reproducer: https://syzkaller.appspot.com/x/repro.c?x=15d70222180000 > > Downloadable assets: > disk image: https://storage.googleapis.com/syzbot-assets/ffe1f52b2e32/disk-603c04e2.raw.xz > vmlinux: https://storage.googleapis.com/syzbot-assets/76775e0b335d/vmlinux-603c04e2.xz > kernel image: https://storage.googleapis.com/syzbot-assets/8cd3c1c87eef/bzImage-603c04e2.xz > > The issue was bisected to: > > commit 181a42edddf51d5d9697ecdf365d72ebeab5afb0 > Author: Ziyang Xuan <william.x...@huawei.com> > Date: Wed Oct 11 09:57:31 2023 +0000 > > Bluetooth: Make handle of hci_conn be unique > > bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=1357945c180000 > final oops: https://syzkaller.appspot.com/x/report.txt?x=10d7945c180000 > console output: https://syzkaller.appspot.com/x/log.txt?x=1757945c180000 > > IMPORTANT: if you fix the issue, please add the following tag to the commit: > Reported-by: syzbot+b2545b...@syzkaller.appspotmail.com > Fixes: 181a42edddf5 ("Bluetooth: Make handle of hci_conn be unique") #syz test git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master -- With regards, Pavel Skripkin ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [syzbot] [bluetooth?] WARNING in hci_conn_del 2024-02-28 4:53 [syzbot] [bluetooth?] WARNING in hci_conn_del syzbot 2024-06-13 21:15 ` [syzbot] " syzbot @ 2024-06-16 10:14 ` Edward Adam Davis 2024-06-16 10:33 ` syzbot 2024-06-16 10:20 ` [PATCH] bluetooth: handle value within the ida range should not be handled in BIG Edward Adam Davis 2 siblings, 1 reply; 12+ messages in thread From: Edward Adam Davis @ 2024-06-16 10:14 UTC (permalink / raw) To: syzbot+b2545b087a01a7319474; +Cc: linux-kernel, syzkaller-bugs please test wrn #syz test https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 603c04e27c3e diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index a487f9df8145..4130d64d9a80 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@ -6893,6 +6893,9 @@ static void hci_le_big_sync_established_evt(struct hci_dev *hdev, void *data, bis = hci_conn_hash_lookup_handle(hdev, handle); if (!bis) { + if (handle > HCI_CONN_HANDLE_MAX) + continue; + bis = hci_conn_add(hdev, ISO_LINK, BDADDR_ANY, HCI_ROLE_SLAVE, handle); if (IS_ERR(bis)) ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [syzbot] [bluetooth?] WARNING in hci_conn_del 2024-06-16 10:14 ` [syzbot] [bluetooth?] " Edward Adam Davis @ 2024-06-16 10:33 ` syzbot 0 siblings, 0 replies; 12+ messages in thread From: syzbot @ 2024-06-16 10:33 UTC (permalink / raw) To: eadavis, linux-kernel, syzkaller-bugs Hello, syzbot has tested the proposed patch but the reproducer is still triggering an issue: SYZFAIL: NL802154_CMD_SET_SHORT_ADDR failed 2024/06/16 10:32:05 ignoring optional flag "sandboxArg"="0" 2024/06/16 10:32:05 parsed 1 programs 2024/06/16 10:32:05 [FATAL] failed to run ["./syz-executor" "setup" "fault" "binfmt_misc" "usb" "802154" "swap"]: exit status 67 mkdir(/syzcgroup) failed: 17 mount(binfmt_misc) failed: 16 SYZFAIL: NL802154_CMD_SET_SHORT_ADDR failed (errno 16: Device or resource busy) Tested on: commit: 603c04e2 Merge tag 'parisc-for-6.8-rc6' of git://git.k.. git tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git console output: https://syzkaller.appspot.com/x/log.txt?x=13254bca980000 kernel config: https://syzkaller.appspot.com/x/.config?x=686c39ecef854022 dashboard link: https://syzkaller.appspot.com/bug?extid=b2545b087a01a7319474 compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40 patch: https://syzkaller.appspot.com/x/patch.diff?x=12b26851980000 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH] bluetooth: handle value within the ida range should not be handled in BIG 2024-02-28 4:53 [syzbot] [bluetooth?] WARNING in hci_conn_del syzbot 2024-06-13 21:15 ` [syzbot] " syzbot 2024-06-16 10:14 ` [syzbot] [bluetooth?] " Edward Adam Davis @ 2024-06-16 10:20 ` Edward Adam Davis 2024-06-16 10:37 ` Pavel Skripkin 2 siblings, 1 reply; 12+ messages in thread From: Edward Adam Davis @ 2024-06-16 10:20 UTC (permalink / raw) To: syzbot+b2545b087a01a7319474 Cc: davem, edumazet, johan.hedberg, kuba, linux-bluetooth, linux-kernel, luiz.dentz, luiz.von.dentz, marcel, netdev, pabeni, syzkaller-bugs, william.xuanziyang hci_le_big_sync_established_evt is necessary to filter out cases where the handle value is belone to ida id range, otherwise ida will be erroneously released in hci_conn_cleanup. Fixes: 181a42edddf5 ("Bluetooth: Make handle of hci_conn be unique") Reported-by: syzbot+b2545b087a01a7319474@syzkaller.appspotmail.com Signed-off-by: Edward Adam Davis <eadavis@qq.com> --- net/bluetooth/hci_event.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index a487f9df8145..4130d64d9a80 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@ -6893,6 +6893,9 @@ static void hci_le_big_sync_established_evt(struct hci_dev *hdev, void *data, bis = hci_conn_hash_lookup_handle(hdev, handle); if (!bis) { + if (handle > HCI_CONN_HANDLE_MAX) + continue; + bis = hci_conn_add(hdev, ISO_LINK, BDADDR_ANY, HCI_ROLE_SLAVE, handle); if (IS_ERR(bis)) -- 2.43.0 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] bluetooth: handle value within the ida range should not be handled in BIG 2024-06-16 10:20 ` [PATCH] bluetooth: handle value within the ida range should not be handled in BIG Edward Adam Davis @ 2024-06-16 10:37 ` Pavel Skripkin 2024-06-16 13:18 ` [syzbot] [bluetooth?] WARNING in hci_conn_del Edward Adam Davis 0 siblings, 1 reply; 12+ messages in thread From: Pavel Skripkin @ 2024-06-16 10:37 UTC (permalink / raw) To: Edward Adam Davis, syzbot+b2545b087a01a7319474 Cc: davem, edumazet, johan.hedberg, kuba, linux-bluetooth, linux-kernel, luiz.dentz, luiz.von.dentz, marcel, netdev, pabeni, syzkaller-bugs, william.xuanziyang On 6/16/24 1:20 PM, 'Edward Adam Davis' via syzkaller-bugs wrote: > hci_le_big_sync_established_evt is necessary to filter out cases where the handle > value is belone to ida id range, otherwise ida will be erroneously released in > hci_conn_cleanup. > > Fixes: 181a42edddf5 ("Bluetooth: Make handle of hci_conn be unique") > Reported-by: syzbot+b2545b087a01a7319474@syzkaller.appspotmail.com > Signed-off-by: Edward Adam Davis <eadavis@qq.com> > --- There is one more user of `hci_conn_add` which may pass too big handle which is `hci_le_cis_req_evt`. I think, it should be resolved on API level as I tried to test here [0], but syzbot is feeling bad for some reason [0] https://lore.kernel.org/all/31ac448d-2a21-4e93-8a00-5c7090970452@gmail.com/ > net/bluetooth/hci_event.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c > index a487f9df8145..4130d64d9a80 100644 > --- a/net/bluetooth/hci_event.c > +++ b/net/bluetooth/hci_event.c > @@ -6893,6 +6893,9 @@ static void hci_le_big_sync_established_evt(struct hci_dev *hdev, void *data, > > bis = hci_conn_hash_lookup_handle(hdev, handle); > if (!bis) { > + if (handle > HCI_CONN_HANDLE_MAX) > + continue; > + > bis = hci_conn_add(hdev, ISO_LINK, BDADDR_ANY, > HCI_ROLE_SLAVE, handle); > if (IS_ERR(bis)) -- With regards, Pavel Skripkin ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [syzbot] [bluetooth?] WARNING in hci_conn_del 2024-06-16 10:37 ` Pavel Skripkin @ 2024-06-16 13:18 ` Edward Adam Davis 0 siblings, 0 replies; 12+ messages in thread From: Edward Adam Davis @ 2024-06-16 13:18 UTC (permalink / raw) To: paskripkin Cc: davem, eadavis, edumazet, johan.hedberg, kuba, linux-bluetooth, linux-kernel, luiz.dentz, luiz.von.dentz, marcel, netdev, pabeni, syzbot+b2545b087a01a7319474, syzkaller-bugs, william.xuanziyang On Sun, 16 Jun 2024 13:37:17 +0300, Pavel Skripkin wrote: > > hci_le_big_sync_established_evt is necessary to filter out cases where the handle > > value is belone to ida id range, otherwise ida will be erroneously released in > > hci_conn_cleanup. > > > > Fixes: 181a42edddf5 ("Bluetooth: Make handle of hci_conn be unique") > > Reported-by: syzbot+b2545b087a01a7319474@syzkaller.appspotmail.com > > Signed-off-by: Edward Adam Davis <eadavis@qq.com> > > --- > > There is one more user of `hci_conn_add` which may pass too big handle > which is `hci_le_cis_req_evt`. This case only affect hci_le_big_sync_established_evt. -- Edward ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <c261e607-78da-4536-95e3-114b5d766918@gmail.com>]
* Re: [syzbot] [bluetooth?] WARNING in hci_conn_del [not found] <c261e607-78da-4536-95e3-114b5d766918@gmail.com> @ 2024-06-13 23:29 ` syzbot 2024-06-14 8:42 ` Pavel Skripkin 0 siblings, 1 reply; 12+ messages in thread From: syzbot @ 2024-06-13 23:29 UTC (permalink / raw) To: linux-kernel, paskripkin, syzkaller-bugs Hello, syzbot has tested the proposed patch but the reproducer is still triggering an issue: SYZFAIL: NL802154_CMD_SET_SHORT_ADDR failed 2024/06/13 23:28:26 ignoring optional flag "sandboxArg"="0" 2024/06/13 23:28:27 parsed 1 programs 2024/06/13 23:28:27 [FATAL] failed to run ["./syz-executor" "setup" "fault" "binfmt_misc" "usb" "802154" "swap"]: exit status 67 mkdir(/syzcgroup) failed: 17 mount(binfmt_misc) failed: 16 SYZFAIL: NL802154_CMD_SET_SHORT_ADDR failed (errno 16: Device or resource busy) Tested on: commit: d20f6b3d Merge tag 'net-6.10-rc4' of git://git.kernel... git tree: upstream console output: https://syzkaller.appspot.com/x/log.txt?x=108934a2980000 kernel config: https://syzkaller.appspot.com/x/.config?x=fa0ce06dcc735711 dashboard link: https://syzkaller.appspot.com/bug?extid=b2545b087a01a7319474 compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40 patch: https://syzkaller.appspot.com/x/patch.diff?x=13f923e2980000 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [syzbot] [bluetooth?] WARNING in hci_conn_del 2024-06-13 23:29 ` syzbot @ 2024-06-14 8:42 ` Pavel Skripkin 2024-06-15 3:09 ` syzbot 2024-06-15 21:37 ` Pavel Skripkin 0 siblings, 2 replies; 12+ messages in thread From: Pavel Skripkin @ 2024-06-14 8:42 UTC (permalink / raw) To: syzbot, linux-kernel, syzkaller-bugs [-- Attachment #1: Type: text/plain, Size: 723 bytes --] On 6/14/24 2:29 AM, syzbot wrote: > Hello, > > syzbot has tested the proposed patch but the reproducer is still triggering an issue: > SYZFAIL: NL802154_CMD_SET_SHORT_ADDR failed > > 2024/06/13 23:28:26 ignoring optional flag "sandboxArg"="0" > 2024/06/13 23:28:27 parsed 1 programs > 2024/06/13 23:28:27 [FATAL] failed to run ["./syz-executor" "setup" "fault" "binfmt_misc" "usb" "802154" "swap"]: exit status 67 > mkdir(/syzcgroup) failed: 17 > mount(binfmt_misc) failed: 16 > SYZFAIL: NL802154_CMD_SET_SHORT_ADDR failed > (errno 16: Device or resource busy) > > smells unrelated. let's try again #syz test git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git maste -- With regards, Pavel Skripkin [-- Attachment #2: 0001-bluetooth-hci-disallow-setting-handle-bigger-than-HC.patch --] [-- Type: text/x-patch, Size: 1975 bytes --] From cd75c43796451af0e3c5e6b42aa7276603c4bb1b Mon Sep 17 00:00:00 2001 From: Pavel Skripkin <paskripkin@gmail.com> Date: Fri, 14 Jun 2024 00:02:51 +0300 Subject: [PATCH] bluetooth/hci: disallow setting handle bigger than HCI_CONN_HANDLE_MAX Syzbot hit warning in hci_conn_del() caused by freeing handle that was not allocated using ida allocator. This is caused by handle bigger than HCI_CONN_HANDLE_MAX passed by hci_le_big_sync_established_evt(), which makes code think it's unset connection. Add same check for handle upper bound as in hci_conn_set_handle() to prevent warning. Fixes: https://syzkaller.appspot.com/bug?extid=b2545b087a01a7319474 Reported-by: syzbot+b2545b087a01a7319474@syzkaller.appspotmail.com Fixes: 181a42edddf5 ("Bluetooth: Make handle of hci_conn be unique") Signed-off-by: Pavel Skripkin <paskripkin@gmail.com> --- net/bluetooth/hci_conn.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c index 0c76dcde5361..dd21fee1d7c6 100644 --- a/net/bluetooth/hci_conn.c +++ b/net/bluetooth/hci_conn.c @@ -899,8 +899,8 @@ static int hci_conn_hash_alloc_unset(struct hci_dev *hdev) U16_MAX, GFP_ATOMIC); } -struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst, - u8 role, u16 handle) +static struct hci_conn *__hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst, + u8 role, u16 handle) { struct hci_conn *conn; @@ -1044,6 +1044,15 @@ struct hci_conn *hci_conn_add_unset(struct hci_dev *hdev, int type, return hci_conn_add(hdev, type, dst, role, handle); } +struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst, + u8 role, u16 handle) +{ + if (handle > HCI_CONN_HANDLE_MAX) + return ERR_PTR(-EINVAL); + + return __hci_conn_add(hdev, type, dst, role, handle); +} + static void hci_conn_cleanup_child(struct hci_conn *conn, u8 reason) { if (!reason) -- 2.45.2 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [syzbot] [bluetooth?] WARNING in hci_conn_del 2024-06-14 8:42 ` Pavel Skripkin @ 2024-06-15 3:09 ` syzbot 2024-06-15 21:37 ` Pavel Skripkin 1 sibling, 0 replies; 12+ messages in thread From: syzbot @ 2024-06-15 3:09 UTC (permalink / raw) To: linux-kernel, paskripkin, syzkaller-bugs Hello, syzbot has tested the proposed patch but the reproducer is still triggering an issue: SYZFAIL: NL802154_CMD_SET_SHORT_ADDR failed 2024/06/15 03:08:49 ignoring optional flag "sandboxArg"="0" 2024/06/15 03:08:49 parsed 1 programs 2024/06/15 03:08:49 [FATAL] failed to run ["./syz-executor" "setup" "fault" "binfmt_misc" "usb" "802154" "swap"]: exit status 67 mkdir(/syzcgroup) failed: 17 mount(binfmt_misc) failed: 16 SYZFAIL: NL802154_CMD_SET_SHORT_ADDR failed (errno 16: Device or resource busy) Tested on: commit: c286c21f Merge tag 'block-6.10-20240614' of git://git... git tree: upstream console output: https://syzkaller.appspot.com/x/log.txt?x=144e93fe980000 kernel config: https://syzkaller.appspot.com/x/.config?x=fa0ce06dcc735711 dashboard link: https://syzkaller.appspot.com/bug?extid=b2545b087a01a7319474 compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40 patch: https://syzkaller.appspot.com/x/patch.diff?x=14d0aede980000 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [syzbot] [bluetooth?] WARNING in hci_conn_del 2024-06-14 8:42 ` Pavel Skripkin 2024-06-15 3:09 ` syzbot @ 2024-06-15 21:37 ` Pavel Skripkin 2024-06-16 3:52 ` syzbot 1 sibling, 1 reply; 12+ messages in thread From: Pavel Skripkin @ 2024-06-15 21:37 UTC (permalink / raw) To: syzbot, linux-kernel, syzkaller-bugs [-- Attachment #1: Type: text/plain, Size: 755 bytes --] On 6/14/24 11:42 AM, Pavel Skripkin wrote: > > > On 6/14/24 2:29 AM, syzbot wrote: >> Hello, >> >> syzbot has tested the proposed patch but the reproducer is still triggering an issue: >> SYZFAIL: NL802154_CMD_SET_SHORT_ADDR failed >> >> 2024/06/13 23:28:26 ignoring optional flag "sandboxArg"="0" >> 2024/06/13 23:28:27 parsed 1 programs >> 2024/06/13 23:28:27 [FATAL] failed to run ["./syz-executor" "setup" "fault" "binfmt_misc" "usb" "802154" "swap"]: exit status 67 >> mkdir(/syzcgroup) failed: 17 >> mount(binfmt_misc) failed: 16 >> SYZFAIL: NL802154_CMD_SET_SHORT_ADDR failed >> (errno 16: Device or resource busy) >> >> #syz test git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master -- With regards, Pavel Skripkin [-- Attachment #2: 0001-bluetooth-hci-disallow-setting-handle-bigger-than-HC.patch --] [-- Type: text/x-patch, Size: 1975 bytes --] From cd75c43796451af0e3c5e6b42aa7276603c4bb1b Mon Sep 17 00:00:00 2001 From: Pavel Skripkin <paskripkin@gmail.com> Date: Fri, 14 Jun 2024 00:02:51 +0300 Subject: [PATCH] bluetooth/hci: disallow setting handle bigger than HCI_CONN_HANDLE_MAX Syzbot hit warning in hci_conn_del() caused by freeing handle that was not allocated using ida allocator. This is caused by handle bigger than HCI_CONN_HANDLE_MAX passed by hci_le_big_sync_established_evt(), which makes code think it's unset connection. Add same check for handle upper bound as in hci_conn_set_handle() to prevent warning. Fixes: https://syzkaller.appspot.com/bug?extid=b2545b087a01a7319474 Reported-by: syzbot+b2545b087a01a7319474@syzkaller.appspotmail.com Fixes: 181a42edddf5 ("Bluetooth: Make handle of hci_conn be unique") Signed-off-by: Pavel Skripkin <paskripkin@gmail.com> --- net/bluetooth/hci_conn.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c index 0c76dcde5361..dd21fee1d7c6 100644 --- a/net/bluetooth/hci_conn.c +++ b/net/bluetooth/hci_conn.c @@ -899,8 +899,8 @@ static int hci_conn_hash_alloc_unset(struct hci_dev *hdev) U16_MAX, GFP_ATOMIC); } -struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst, - u8 role, u16 handle) +static struct hci_conn *__hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst, + u8 role, u16 handle) { struct hci_conn *conn; @@ -1044,6 +1044,15 @@ struct hci_conn *hci_conn_add_unset(struct hci_dev *hdev, int type, return hci_conn_add(hdev, type, dst, role, handle); } +struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst, + u8 role, u16 handle) +{ + if (handle > HCI_CONN_HANDLE_MAX) + return ERR_PTR(-EINVAL); + + return __hci_conn_add(hdev, type, dst, role, handle); +} + static void hci_conn_cleanup_child(struct hci_conn *conn, u8 reason) { if (!reason) -- 2.45.2 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [syzbot] [bluetooth?] WARNING in hci_conn_del 2024-06-15 21:37 ` Pavel Skripkin @ 2024-06-16 3:52 ` syzbot 0 siblings, 0 replies; 12+ messages in thread From: syzbot @ 2024-06-16 3:52 UTC (permalink / raw) To: linux-kernel, paskripkin, syzkaller-bugs Hello, syzbot has tested the proposed patch but the reproducer is still triggering an issue: SYZFAIL: NL802154_CMD_SET_SHORT_ADDR failed 2024/06/16 03:50:59 ignoring optional flag "sandboxArg"="0" 2024/06/16 03:50:59 parsed 1 programs 2024/06/16 03:50:59 [FATAL] failed to run ["./syz-executor" "setup" "fault" "binfmt_misc" "usb" "802154" "swap"]: exit status 67 mkdir(/syzcgroup) failed: 17 mount(binfmt_misc) failed: 16 SYZFAIL: NL802154_CMD_SET_SHORT_ADDR failed (errno 16: Device or resource busy) Tested on: commit: a3e18a54 Merge tag 'xfs-6.10-fixes-3' of git://git.ker.. git tree: upstream console output: https://syzkaller.appspot.com/x/log.txt?x=145ccbfe980000 kernel config: https://syzkaller.appspot.com/x/.config?x=fa0ce06dcc735711 dashboard link: https://syzkaller.appspot.com/bug?extid=b2545b087a01a7319474 compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40 patch: https://syzkaller.appspot.com/x/patch.diff?x=130eb12e980000 ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2024-06-16 13:29 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-28 4:53 [syzbot] [bluetooth?] WARNING in hci_conn_del syzbot
2024-06-13 21:15 ` [syzbot] " syzbot
2024-06-16 10:14 ` [syzbot] [bluetooth?] " Edward Adam Davis
2024-06-16 10:33 ` syzbot
2024-06-16 10:20 ` [PATCH] bluetooth: handle value within the ida range should not be handled in BIG Edward Adam Davis
2024-06-16 10:37 ` Pavel Skripkin
2024-06-16 13:18 ` [syzbot] [bluetooth?] WARNING in hci_conn_del Edward Adam Davis
[not found] <c261e607-78da-4536-95e3-114b5d766918@gmail.com>
2024-06-13 23:29 ` syzbot
2024-06-14 8:42 ` Pavel Skripkin
2024-06-15 3:09 ` syzbot
2024-06-15 21:37 ` Pavel Skripkin
2024-06-16 3:52 ` syzbot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®