Re: crash by cdc_acm driver in kernels 4.8-rc1/5

From: Wim Osterholt
Date: Wed Sep 28 2016 - 10:47:05 EST


On Wed, Sep 28, 2016 at 11:16:04AM +0200, Oliver Neukum wrote:
>
> Very good. This is a valid oops. We can do two things. When I
> decode it, seems to crash in acm_alloc_minor() which does not make
> sense. It is likely that our kernels or compilers are a bit different.
> Could you please call gdb on your kernel module cdc-acm.ko
> and do:
>
> list *(acm_probe+0x4ee)
>
> this should show you where it crashes.

Currently gcc-4.9.3-rc3.
This is from vanilla kernel 4.8-rc8

# gdb ./cdc-acm.ko
GNU gdb (Gentoo 7.10.1 vanilla) 7.10.1
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see: <https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./cdc-acm.ko...done.
(gdb) list *(acm_probe+0x4ee)
0x1c9b is in acm_probe (drivers/usb/class/cdc-acm.c:1346).
1341 acm->control = control_interface;
1342 acm->data = data_interface;
1343 acm->minor = minor;
1344 acm->dev = usb_dev;
1345 if (h.usb_cdc_acm_descriptor)
1346 acm->ctrl_caps = h.usb_cdc_acm_descriptor->bmCapabilities;
1347 if (quirks & NO_CAP_LINE)
1348 acm->ctrl_caps &= ~USB_CDC_CAP_LINE;
1349 acm->ctrlsize = ctrlsize;
1350 acm->readsize = readsize;
(gdb) quit

A new kernel is compiling now.

Regards, Wim.