All of lore.kernel.org
 help / color / mirror / Atom feed
* [syzbot] [usb?] general protection fault in f_midi2_stop_eps
@ 2026-07-28 13:41 syzbot
  2026-07-28 15:59 ` Forwarded: [PATCH] usb: gadget: f_midi2: Fix null dereference syzbot
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: syzbot @ 2026-07-28 13:41 UTC (permalink / raw)
  To: gregkh, linux-kernel, linux-usb, syzkaller-bugs

Hello,

syzbot found the following issue on:

HEAD commit:    3dab139d4795 Merge tag 'rust-fixes-7.2-2' of git://git.ker..
git tree:       upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=137366b9580000
kernel config:  https://syzkaller.appspot.com/x/.config?x=cb17729fb04b1e3a
dashboard link: https://syzkaller.appspot.com/bug?extid=bbb6dad313f4aaa8da6b
compiler:       Debian clang version 22.1.8 (++20260613092233+e80beda6e255-1~exp1~20260613092250.77), Debian LLD 22.1.8
syz repro:      https://syzkaller.appspot.com/x/repro.syz?x=1369b746580000
C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=134a72ea580000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/647c579a2eab/disk-3dab139d.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/8800001c8ee2/vmlinux-3dab139d.xz
kernel image: https://storage.googleapis.com/syzbot-assets/337d386facb0/bzImage-3dab139d.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+bbb6dad313f4aaa8da6b@syzkaller.appspotmail.com

Oops: general protection fault, probably for non-canonical address 0xdffffc00000000ee: 0000 [#1] SMP KASAN PTI
KASAN: null-ptr-deref in range [0x0000000000000770-0x0000000000000777]
CPU: 0 UID: 0 PID: 16 Comm: ktimers/0 Not tainted syzkaller #0 PREEMPT_{RT,(full)} 
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/16/2026
RIP: 0010:f_midi2_free_ep_reqs drivers/usb/gadget/function/f_midi2.c:1166 [inline]
RIP: 0010:f_midi2_stop_eps+0x28e/0x4d0 drivers/usb/gadget/function/f_midi2.c:1246
Code: 89 f0 48 c1 e8 03 42 80 3c 28 00 74 08 4c 89 f7 e8 27 af e7 fa 41 bf 70 07 00 00 4d 03 3e 4c 89 f8 48 c1 e8 03 48 89 44 24 18 <42> 0f b6 04 28 84 c0 0f 85 12 02 00 00 41 8b 1f 31 ff 89 de e8 e9
RSP: 0018:ffffc900001576f8 EFLAGS: 00010206
RAX: 00000000000000ee RBX: ffff88802eae0120 RCX: ffff88801caa8000
RDX: 0000000000000100 RSI: 0000000000000000 RDI: 0000000000000100
RBP: ffff88802eae0100 R08: ffffffff8faf9337 R09: 1ffffffff1f5f266
R10: dffffc0000000000 R11: fffffbfff1f5f267 R12: ffff88802eae0770
R13: dffffc0000000000 R14: ffff88802eae0128 R15: 0000000000000770
FS:  0000000000000000(0000) GS:ffff888125c42000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000055557b4714e8 CR3: 0000000035be2000 CR4: 00000000003526f0
Call Trace:
 <TASK>
 f_midi2_set_alt+0x11c/0xf00 drivers/usb/gadget/function/f_midi2.c:1296
 composite_setup+0x1ffd/0x3480 drivers/usb/gadget/composite.c:1933
 configfs_composite_setup+0xbd/0x100 drivers/usb/gadget/configfs.c:1877
 dummy_timer+0x2ea8/0x4b30 drivers/usb/gadget/udc/dummy_hcd.c:1937
 __run_hrtimer kernel/time/hrtimer.c:2032 [inline]
 __hrtimer_run_queues+0x3eb/0xaf0 kernel/time/hrtimer.c:2096
 hrtimer_run_softirq+0x18f/0x260 kernel/time/hrtimer.c:2113
 handle_softirqs+0x1d9/0x6c0 kernel/softirq.c:622
 __do_softirq kernel/softirq.c:656 [inline]
 run_ktimerd+0x69/0x100 kernel/softirq.c:1151
 smpboot_thread_fn+0x57c/0xa80 kernel/smpboot.c:160
 kthread+0x388/0x470 kernel/kthread.c:436
 ret_from_fork+0x514/0xb70 arch/x86/kernel/process.c:158
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
 </TASK>
Modules linked in:
---[ end trace 0000000000000000 ]---
RIP: 0010:f_midi2_free_ep_reqs drivers/usb/gadget/function/f_midi2.c:1166 [inline]
RIP: 0010:f_midi2_stop_eps+0x28e/0x4d0 drivers/usb/gadget/function/f_midi2.c:1246
Code: 89 f0 48 c1 e8 03 42 80 3c 28 00 74 08 4c 89 f7 e8 27 af e7 fa 41 bf 70 07 00 00 4d 03 3e 4c 89 f8 48 c1 e8 03 48 89 44 24 18 <42> 0f b6 04 28 84 c0 0f 85 12 02 00 00 41 8b 1f 31 ff 89 de e8 e9
RSP: 0018:ffffc900001576f8 EFLAGS: 00010206
RAX: 00000000000000ee RBX: ffff88802eae0120 RCX: ffff88801caa8000
RDX: 0000000000000100 RSI: 0000000000000000 RDI: 0000000000000100
RBP: ffff88802eae0100 R08: ffffffff8faf9337 R09: 1ffffffff1f5f266
R10: dffffc0000000000 R11: fffffbfff1f5f267 R12: ffff88802eae0770
R13: dffffc0000000000 R14: ffff88802eae0128 R15: 0000000000000770
FS:  0000000000000000(0000) GS:ffff888125c42000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000055557b4714e8 CR3: 0000000035be2000 CR4: 00000000003526f0
----------------
Code disassembly (best guess):
   0:	89 f0                	mov    %esi,%eax
   2:	48 c1 e8 03          	shr    $0x3,%rax
   6:	42 80 3c 28 00       	cmpb   $0x0,(%rax,%r13,1)
   b:	74 08                	je     0x15
   d:	4c 89 f7             	mov    %r14,%rdi
  10:	e8 27 af e7 fa       	call   0xfae7af3c
  15:	41 bf 70 07 00 00    	mov    $0x770,%r15d
  1b:	4d 03 3e             	add    (%r14),%r15
  1e:	4c 89 f8             	mov    %r15,%rax
  21:	48 c1 e8 03          	shr    $0x3,%rax
  25:	48 89 44 24 18       	mov    %rax,0x18(%rsp)
* 2a:	42 0f b6 04 28       	movzbl (%rax,%r13,1),%eax <-- trapping instruction
  2f:	84 c0                	test   %al,%al
  31:	0f 85 12 02 00 00    	jne    0x249
  37:	41 8b 1f             	mov    (%r15),%ebx
  3a:	31 ff                	xor    %edi,%edi
  3c:	89 de                	mov    %ebx,%esi
  3e:	e8                   	.byte 0xe8
  3f:	e9                   	.byte 0xe9


---
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.

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] 4+ messages in thread

* Forwarded: [PATCH] usb: gadget: f_midi2: Fix null dereference
  2026-07-28 13:41 [syzbot] [usb?] general protection fault in f_midi2_stop_eps syzbot
@ 2026-07-28 15:59 ` syzbot
  2026-07-28 17:25 ` syzbot
  2026-07-28 17:25 ` syzbot
  2 siblings, 0 replies; 4+ messages in thread
From: syzbot @ 2026-07-28 15:59 UTC (permalink / raw)
  To: linux-kernel

For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org.

***

Subject: [PATCH] usb: gadget: f_midi2: Fix null dereference
Author: michail.tatas@gmail.com

#syz test

f_midi2_bind only binds if 
  if (... != SNDRV_UMP_DIR_OUTPUT)
  ...
  if (... != SNDRV_UMP_DIR_INPUT)
  ...

When f_midi2_set_alt gets called, it uncoditionally calls
f_midi2_stop_eps which triggers a null dereference in
f_midi2_free_ep_reqs

Add guard to catch dereference in f_midi2_free_ep_reqs like 
f_midi2_drop_reqs already has

Signed-off-by: Michail Tatas <michail.tatas@gmail.com>
---
 drivers/usb/gadget/function/f_midi2.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/usb/gadget/function/f_midi2.c b/drivers/usb/gadget/function/f_midi2.c
index 19fdac024343..b84f2c220b2e 100644
--- a/drivers/usb/gadget/function/f_midi2.c
+++ b/drivers/usb/gadget/function/f_midi2.c
@@ -1163,6 +1163,9 @@ static void f_midi2_free_ep_reqs(struct f_midi2_usb_ep *usb_ep)
 	struct f_midi2 *midi2 = usb_ep->card;
 	int i;
 
+	if (!usb_ep->usb_ep || !usb_ep->num_reqs)
+		return;
+
 	for (i = 0; i < midi2->info.num_reqs; i++) {
 		if (!usb_ep->reqs[i].req)
 			continue;
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Forwarded: [PATCH] usb: gadget: f_midi2: Fix null dereference
  2026-07-28 13:41 [syzbot] [usb?] general protection fault in f_midi2_stop_eps syzbot
  2026-07-28 15:59 ` Forwarded: [PATCH] usb: gadget: f_midi2: Fix null dereference syzbot
  2026-07-28 17:25 ` syzbot
@ 2026-07-28 17:25 ` syzbot
  2 siblings, 0 replies; 4+ messages in thread
From: syzbot @ 2026-07-28 17:25 UTC (permalink / raw)
  To: linux-kernel

For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org.

***

Subject: [PATCH] usb: gadget: f_midi2: Fix null dereference
Author: michail.tatas@gmail.com

#syz test

f_midi2_bind only binds if 
  if (... != SNDRV_UMP_DIR_OUTPUT)
  ...
  if (... != SNDRV_UMP_DIR_INPUT)
  ...

When f_midi2_set_alt gets called, it uncoditionally calls
f_midi2_stop_eps which triggers a null dereference in
f_midi2_free_ep_reqs

Add guard to catch dereference in f_midi2_free_ep_reqs like 
f_midi2_drop_reqs already has

Signed-off-by: Michail Tatas <michail.tatas@gmail.com>
---
 drivers/usb/gadget/function/f_midi2.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/usb/gadget/function/f_midi2.c b/drivers/usb/gadget/function/f_midi2.c
index 19fdac024343..b9bb09c4b51a 100644
--- a/drivers/usb/gadget/function/f_midi2.c
+++ b/drivers/usb/gadget/function/f_midi2.c
@@ -1163,6 +1163,9 @@ static void f_midi2_free_ep_reqs(struct f_midi2_usb_ep *usb_ep)
 	struct f_midi2 *midi2 = usb_ep->card;
 	int i;
 
+	if (!usb_ep->usb_ep || !usb_ep->num_reqs)
+		return;
+
 	for (i = 0; i < midi2->info.num_reqs; i++) {
 		if (!usb_ep->reqs[i].req)
 			continue;
@@ -1203,6 +1206,9 @@ static int f_midi2_init_ep(struct f_midi2 *midi2, struct f_midi2_ep *ep,
 /* Free EP */
 static void f_midi2_free_ep(struct f_midi2_usb_ep *usb_ep)
 {
+	if(!usb_ep->usb_ep)
+		return;
+
 	f_midi2_drop_reqs(usb_ep);
 
 	f_midi2_free_ep_reqs(usb_ep);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Forwarded: [PATCH] usb: gadget: f_midi2: Fix null dereference
  2026-07-28 13:41 [syzbot] [usb?] general protection fault in f_midi2_stop_eps syzbot
  2026-07-28 15:59 ` Forwarded: [PATCH] usb: gadget: f_midi2: Fix null dereference syzbot
@ 2026-07-28 17:25 ` syzbot
  2026-07-28 17:25 ` syzbot
  2 siblings, 0 replies; 4+ messages in thread
From: syzbot @ 2026-07-28 17:25 UTC (permalink / raw)
  To: linux-kernel

For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org.

***

Subject: [PATCH] usb: gadget: f_midi2: Fix null dereference
Author: michail.tatas@gmail.com

#syz test

f_midi2_bind only binds if 
  if (... != SNDRV_UMP_DIR_OUTPUT)
  ...
  if (... != SNDRV_UMP_DIR_INPUT)
  ...

When f_midi2_set_alt gets called, it uncoditionally calls
f_midi2_stop_eps which triggers a null dereference in
f_midi2_free_ep_reqs

Add guard to catch dereference in f_midi2_free_ep_reqs like 
f_midi2_drop_reqs already has

Signed-off-by: Michail Tatas <michail.tatas@gmail.com>
---
 drivers/usb/gadget/function/f_midi2.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/usb/gadget/function/f_midi2.c b/drivers/usb/gadget/function/f_midi2.c
index 19fdac024343..b9bb09c4b51a 100644
--- a/drivers/usb/gadget/function/f_midi2.c
+++ b/drivers/usb/gadget/function/f_midi2.c
@@ -1163,6 +1163,9 @@ static void f_midi2_free_ep_reqs(struct f_midi2_usb_ep *usb_ep)
 	struct f_midi2 *midi2 = usb_ep->card;
 	int i;
 
+	if (!usb_ep->usb_ep || !usb_ep->num_reqs)
+		return;
+
 	for (i = 0; i < midi2->info.num_reqs; i++) {
 		if (!usb_ep->reqs[i].req)
 			continue;
@@ -1203,6 +1206,9 @@ static int f_midi2_init_ep(struct f_midi2 *midi2, struct f_midi2_ep *ep,
 /* Free EP */
 static void f_midi2_free_ep(struct f_midi2_usb_ep *usb_ep)
 {
+	if(!usb_ep->usb_ep)
+		return;
+
 	f_midi2_drop_reqs(usb_ep);
 
 	f_midi2_free_ep_reqs(usb_ep);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-07-28 17:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-28 13:41 [syzbot] [usb?] general protection fault in f_midi2_stop_eps syzbot
2026-07-28 15:59 ` Forwarded: [PATCH] usb: gadget: f_midi2: Fix null dereference syzbot
2026-07-28 17:25 ` syzbot
2026-07-28 17:25 ` syzbot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.