* KASAN: slab-out-of-bounds Read in au0828_rc_unregister (2)
@ 2019-05-15 16:17 syzbot
2019-05-19 19:48 ` [PATCH] media: au0828: fix null dereference in error path Sean Young
0 siblings, 1 reply; 2+ messages in thread
From: syzbot @ 2019-05-15 16:17 UTC (permalink / raw)
To: andreyknvl, linux-kernel, linux-media, linux-usb, mchehab, sean,
syzkaller-bugs
Hello,
syzbot found the following crash on:
HEAD commit: 43151d6c 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=162ca944a00000
kernel config: https://syzkaller.appspot.com/x/.config?x=95aff7278e7ff25e
dashboard link: https://syzkaller.appspot.com/bug?extid=357d86bcb4cca1a2f572
compiler: gcc (GCC) 9.0.0 20181231 (experimental)
Unfortunately, I don't have any reproducer for this crash yet.
IMPORTANT: if you fix the bug, please add the following tag to the commit:
Reported-by: syzbot+357d86bcb4cca1a2f572@syzkaller.appspotmail.com
au0828: recv_control_msg() Failed receiving control message, error -71.
au0828: recv_control_msg() Failed receiving control message, error -71.
au0828: recv_control_msg() Failed receiving control message, error -71.
au8522_writereg: writereg error (reg == 0x106, val == 0x0001, ret == -5)
usb 4-1: selecting invalid altsetting 5
au0828: Failure setting usb interface0 to as5
au0828: au0828_usb_probe() au0828_analog_register failed to register on V4L2
==================================================================
BUG: KASAN: slab-out-of-bounds in au0828_rc_unregister+0x9a/0xb0
drivers/media/usb/au0828/au0828-input.c:353
Read of size 8 at addr ffff8881cb76f308 by task kworker/1:5/5626
CPU: 1 PID: 5626 Comm: kworker/1:5 Not tainted 5.1.0-rc3+ #8
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
Workqueue: usb_hub_wq hub_event
Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0xca/0x13e lib/dump_stack.c:113
print_address_description+0x67/0x231 mm/kasan/report.c:187
kasan_report.cold+0x1a/0x35 mm/kasan/report.c:317
au0828_rc_unregister+0x9a/0xb0 drivers/media/usb/au0828/au0828-input.c:353
au0828_usb_disconnect+0x6a/0x130 drivers/media/usb/au0828/au0828-core.c:189
au0828_usb_probe.cold+0x111/0x16e
drivers/media/usb/au0828/au0828-core.c:661
usb_probe_interface+0x30d/0x7b0 drivers/usb/core/driver.c:361
really_probe+0x296/0x680 drivers/base/dd.c:509
driver_probe_device+0xf9/0x200 drivers/base/dd.c:671
__device_attach_driver+0x1c4/0x230 drivers/base/dd.c:778
bus_for_each_drv+0x15e/0x1e0 drivers/base/bus.c:454
__device_attach+0x21e/0x360 drivers/base/dd.c:844
bus_probe_device+0x1ec/0x2a0 drivers/base/bus.c:514
device_add+0xaf4/0x1700 drivers/base/core.c:2106
usb_set_configuration+0xdf2/0x1670 drivers/usb/core/message.c:2023
generic_probe+0x9d/0xd5 drivers/usb/core/generic.c:210
usb_probe_device+0xa8/0x110 drivers/usb/core/driver.c:266
really_probe+0x296/0x680 drivers/base/dd.c:509
driver_probe_device+0xf9/0x200 drivers/base/dd.c:671
__device_attach_driver+0x1c4/0x230 drivers/base/dd.c:778
bus_for_each_drv+0x15e/0x1e0 drivers/base/bus.c:454
__device_attach+0x21e/0x360 drivers/base/dd.c:844
bus_probe_device+0x1ec/0x2a0 drivers/base/bus.c:514
device_add+0xaf4/0x1700 drivers/base/core.c:2106
usb_new_device.cold+0x8b8/0x1030 drivers/usb/core/hub.c:2534
hub_port_connect drivers/usb/core/hub.c:5089 [inline]
hub_port_connect_change drivers/usb/core/hub.c:5204 [inline]
port_event drivers/usb/core/hub.c:5350 [inline]
hub_event+0x1ac9/0x35a0 drivers/usb/core/hub.c:5432
process_one_work+0x90a/0x1580 kernel/workqueue.c:2269
worker_thread+0x96/0xe20 kernel/workqueue.c:2415
kthread+0x30e/0x420 kernel/kthread.c:253
ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352
The buggy address belongs to the page:
page:ffffea00072ddb00 count:1 mapcount:0 mapping:0000000000000000 index:0x0
compound_mapcount: 0
flags: 0x200000000010000(head)
raw: 0200000000010000 dead000000000100 dead000000000200 0000000000000000
raw: 0000000000000000 0000000000000000 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected
Memory state around the buggy address:
ffff8881cb76f200: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
ffff8881cb76f280: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
> ffff8881cb76f300: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
^
ffff8881cb76f380: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
ffff8881cb76f400: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
==================================================================
---
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.
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH] media: au0828: fix null dereference in error path
2019-05-15 16:17 KASAN: slab-out-of-bounds Read in au0828_rc_unregister (2) syzbot
@ 2019-05-19 19:48 ` Sean Young
0 siblings, 0 replies; 2+ messages in thread
From: Sean Young @ 2019-05-19 19:48 UTC (permalink / raw)
To: syzbot
Cc: andreyknvl, linux-kernel, linux-media, linux-usb, mchehab,
syzkaller-bugs
au0828_usb_disconnect() gets the au0828_dev struct via usb_get_intfdata,
so it needs to set up for the error paths.
Reported-by: syzbot+357d86bcb4cca1a2f572@syzkaller.appspotmail.com
Signed-off-by: Sean Young <sean@mess.org>
---
drivers/media/usb/au0828/au0828-core.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/media/usb/au0828/au0828-core.c b/drivers/media/usb/au0828/au0828-core.c
index 925a80437822..e306d5d5bebb 100644
--- a/drivers/media/usb/au0828/au0828-core.c
+++ b/drivers/media/usb/au0828/au0828-core.c
@@ -729,6 +729,12 @@ static int au0828_usb_probe(struct usb_interface *interface,
/* Setup */
au0828_card_setup(dev);
+ /*
+ * Store the pointer to the au0828_dev so it can be accessed in
+ * au0828_usb_disconnect
+ */
+ usb_set_intfdata(interface, dev);
+
/* Analog TV */
retval = au0828_analog_register(dev, interface);
if (retval) {
@@ -747,12 +753,6 @@ static int au0828_usb_probe(struct usb_interface *interface,
/* Remote controller */
au0828_rc_register(dev);
- /*
- * Store the pointer to the au0828_dev so it can be accessed in
- * au0828_usb_disconnect
- */
- usb_set_intfdata(interface, dev);
-
pr_info("Registered device AU0828 [%s]\n",
dev->board.name == NULL ? "Unset" : dev->board.name);
--
2.20.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-05-19 19:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-05-15 16:17 KASAN: slab-out-of-bounds Read in au0828_rc_unregister (2) syzbot
2019-05-19 19:48 ` [PATCH] media: au0828: fix null dereference in error path Sean Young
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.