Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp4625885ybe; Mon, 16 Sep 2019 15:47:02 -0700 (PDT) X-Google-Smtp-Source: APXvYqwg96GnW0VjrXuGhmNff0/jlkcgRNW3O+pByveejQFAcCZ12Wa68KoBP7Ui5uKk4BMVS5Av X-Received: by 2002:a50:93a4:: with SMTP id o33mr1774305eda.0.1568674022566; Mon, 16 Sep 2019 15:47:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568674022; cv=none; d=google.com; s=arc-20160816; b=r+In10HZ/nBB95ZHg5KwsHYNTUD2WfEkinINkenAjC8i4eJWqNBtPkcJSXTvQhmBaG J4Jv6LXMEkxjHhDswT3qOvY7X83/3L8sgN6JOPPTeh9I6bpyrmJCdrMR6rmPsbsssD4J EyIn7c2R5sBgJvlxji0STOlGzpRt4alP5eZZD3TB+vmQqo49h2c7Ygl2PgPmL7PlnV4h SJnPP+hMrMbCMas6mQybSlS+d7sUbmGzp4jSjrAkQ7wHX+L2x5qilYM1EeuUzbAel9Jb x0z8d0Fa7MWu10IusKDO5KIw8pP05TmmoxucWi4vNfog0u6o9DhvLKR6OFtQRyGAISoA nqYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:in-reply-to :subject:cc:to:from:date; bh=7tqGclh6EB+6EzgZWgYsPVBS5rkZEYwb0uJsUxGnZP0=; b=ZYbBYD3zy47KnkczyIeN4CT/Ye/UUtUfRFC/MDRiIJsF5O8UD0y1wJUtSFlt2yGLus hNcpnhbudSSYiOEdAp4WyfgdNZTmGn+6KghpOAKSqfgxrcnw16f3ES3Vnj57k2jsgR2J b4WBiYyNPji7fdRcPtEYq/R4X7stCxVStiCQpQkmK88dGsJzJvIItsLqPd1U/T4hnEoK d2PCdWvN3RneUXOQ2n/6HOumzT16+vZg5QLANJxowLiWYOMB7l3/TUx7n+SCC2zG9XRJ Dvcb2DFlN5+DDaRTwpI/BY0jHdZvhXLLjNx37+t9eMiaULHv5mG6nAdUTj5B+CRHfHtm X1WA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v25si256735edy.392.2019.09.16.15.46.39; Mon, 16 Sep 2019 15:47:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732405AbfIPUvn (ORCPT + 99 others); Mon, 16 Sep 2019 16:51:43 -0400 Received: from iolanthe.rowland.org ([192.131.102.54]:52398 "HELO iolanthe.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1727126AbfIPUvn (ORCPT ); Mon, 16 Sep 2019 16:51:43 -0400 Received: (qmail 8224 invoked by uid 2102); 16 Sep 2019 16:51:42 -0400 Received: from localhost (sendmail-bs@127.0.0.1) by localhost with SMTP; 16 Sep 2019 16:51:42 -0400 Date: Mon, 16 Sep 2019 16:51:42 -0400 (EDT) From: Alan Stern X-X-Sender: stern@iolanthe.rowland.org To: syzbot cc: andreyknvl@google.com, , , , , , , Subject: Re: general protection fault in usb_set_interface In-Reply-To: <000000000000c2531f0592ab96fb@google.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 16 Sep 2019, syzbot wrote: > Hello, > > syzbot found the following crash on: > > HEAD commit: f0df5c1b usb-fuzzer: main usb gadget fuzzer driver > git tree: https://github.com/google/kasan.git usb-fuzzer > console output: https://syzkaller.appspot.com/x/log.txt?x=158b66f1600000 > kernel config: https://syzkaller.appspot.com/x/.config?x=5c6633fa4ed00be5 > dashboard link: https://syzkaller.appspot.com/bug?extid=7fa38a608b1075dfd634 > compiler: gcc (GCC) 9.0.0 20181231 (experimental) > syz repro: https://syzkaller.appspot.com/x/repro.syz?x=14f57db9600000 > C reproducer: https://syzkaller.appspot.com/x/repro.c?x=127b61a5600000 > > IMPORTANT: if you fix the bug, please add the following tag to the commit: > Reported-by: syzbot+7fa38a608b1075dfd634@syzkaller.appspotmail.com > > usb 3-1: usbvision_write_reg: failed: error -2 > usbvision_set_audio: can't write iopin register for audio switching > kasan: CONFIG_KASAN_INLINE enabled > kasan: GPF could be caused by NULL-ptr deref or user memory access > general protection fault: 0000 [#1] SMP KASAN > CPU: 1 PID: 1955 Comm: v4l_id Not tainted 5.3.0-rc7+ #0 > Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS > Google 01/01/2011 > RIP: 0010:usb_set_interface+0x34/0xa50 drivers/usb/core/message.c:1362 > Code: fc 55 53 48 83 ec 40 89 54 24 18 89 74 24 10 e8 22 1c ef fd 49 8d 7c > 24 48 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f > 85 fb 08 00 00 49 8b 44 24 48 49 8d 7c 24 18 48 89 > RSP: 0018:ffff8881cb19fd50 EFLAGS: 00010206 > RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000000 > RDX: 0000000000000009 RSI: ffffffff834ebe7e RDI: 0000000000000048 > RBP: ffff8881cb8e4200 R08: ffffffff88d21878 R09: ffffed103971cb43 > R10: ffff8881cb19fdc8 R11: ffff8881cb8e5a17 R12: 0000000000000000 > R13: ffff8881cb8e5a10 R14: ffff8881cb8e4cc8 R15: ffff8881cb8e5178 > FS: 00007f4f60b6d700(0000) GS:ffff8881db300000(0000) knlGS:0000000000000000 > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > CR2: 00007f4f6060c330 CR3: 00000001cc3a8000 CR4: 00000000001406e0 > DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 > DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 > Call Trace: > usbvision_radio_close+0x105/0x250 > drivers/media/usb/usbvision/usbvision-video.c:1114 > v4l2_release+0x2e7/0x390 drivers/media/v4l2-core/v4l2-dev.c:455 > __fput+0x2d7/0x840 fs/file_table.c:280 > task_work_run+0x13f/0x1c0 kernel/task_work.c:113 > tracehook_notify_resume include/linux/tracehook.h:188 [inline] > exit_to_usermode_loop+0x1d2/0x200 arch/x86/entry/common.c:163 > prepare_exit_to_usermode arch/x86/entry/common.c:194 [inline] > syscall_return_slowpath arch/x86/entry/common.c:274 [inline] > do_syscall_64+0x45f/0x580 arch/x86/entry/common.c:299 > entry_SYSCALL_64_after_hwframe+0x49/0xbe > RIP: 0033:0x7f4f6069b2b0 > Code: 40 75 0b 31 c0 48 83 c4 08 e9 0c ff ff ff 48 8d 3d c5 32 08 00 e8 c0 > 07 02 00 83 3d 45 a3 2b 00 00 75 10 b8 03 00 00 00 0f 05 <48> 3d 01 f0 ff > ff 73 31 c3 48 83 ec 08 e8 ce 8a 01 00 48 89 04 24 > RSP: 002b:00007ffde2d50ee8 EFLAGS: 00000246 ORIG_RAX: 0000000000000003 > RAX: 0000000000000000 RBX: 0000000000000003 RCX: 00007f4f6069b2b0 > RDX: 00007f4f60951df0 RSI: 0000000000000001 RDI: 0000000000000003 > RBP: 0000000000000000 R08: 00007f4f60951df0 R09: 000000000000000a > R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000400884 > R13: 00007ffde2d51040 R14: 0000000000000000 R15: 0000000000000000 > Modules linked in: > ---[ end trace 62bd2b7512ab49ee ]--- > RIP: 0010:usb_set_interface+0x34/0xa50 drivers/usb/core/message.c:1362 > Code: fc 55 53 48 83 ec 40 89 54 24 18 89 74 24 10 e8 22 1c ef fd 49 8d 7c > 24 48 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f > 85 fb 08 00 00 49 8b 44 24 48 49 8d 7c 24 18 48 89 > RSP: 0018:ffff8881cb19fd50 EFLAGS: 00010206 > RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000000 > RDX: 0000000000000009 RSI: ffffffff834ebe7e RDI: 0000000000000048 > RBP: ffff8881cb8e4200 R08: ffffffff88d21878 R09: ffffed103971cb43 > R10: ffff8881cb19fdc8 R11: ffff8881cb8e5a17 R12: 0000000000000000 > R13: ffff8881cb8e5a10 R14: ffff8881cb8e4cc8 R15: ffff8881cb8e5178 > FS: 00007f4f60b6d700(0000) GS:ffff8881db300000(0000) knlGS:0000000000000000 > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > CR2: 00007f4f6060c330 CR3: 00000001cc3a8000 CR4: 00000000001406e0 > DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 > DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 > > > --- > This bug 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 bug report. See: > https://goo.gl/tpsmEJ#status for how to communicate with syzbot. > syzbot can test patches for this bug, for details see: > https://goo.gl/tpsmEJ#testing-patches Use-after-free bug. Alan Stern #syz test: https://github.com/google/kasan.git f0df5c1b drivers/media/usb/usbvision/usbvision-video.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Index: usb-devel/drivers/media/usb/usbvision/usbvision-video.c =================================================================== --- usb-devel.orig/drivers/media/usb/usbvision/usbvision-video.c +++ usb-devel/drivers/media/usb/usbvision/usbvision-video.c @@ -1111,7 +1111,8 @@ static int usbvision_radio_close(struct mutex_lock(&usbvision->v4l2_lock); /* Set packet size to 0 */ usbvision->iface_alt = 0; - usb_set_interface(usbvision->dev, usbvision->iface, + if (usbvision->dev) + usb_set_interface(usbvision->dev, usbvision->iface, usbvision->iface_alt); usbvision_audio_off(usbvision);