Red Hat Bugzilla – Bug 147176
oops (pppd) on unplugging usb cdc_acm device
Last modified: 2015-01-04 17:16:37 EST
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.3)
Description of problem:
With recent kernels 2.6.10-1.12_FC2 or 2.6.10-1.9_FC2, when I replug
my phone/modem I experience the following oops. I do have to
unplug/replug it because it is a cell phone after all. It _never_
happened with earlier kernels.
usb 1-2: new full speed USB device using uhci_hcd and address 7
cdc_acm 1-2:1.0: ttyACM0: USB ACM device
CSLIP: code copyright 1989 Regents of the University of California
PPP generic driver version 2.4.2
divert: not allocating divert_blk for non-ethernet device ppp0
PPP Deflate Compression module registered
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 5
PCI: setting IRQ 5 as level-triggered
ACPI: PCI interrupt 0000:00:0a.0[A] -> GSI 5 (level, low) -> IRQ 5
usb 1-2: USB disconnect, address 7
divert: no divert_blk to free, ppp0 not ethernet
Unable to handle kernel NULL pointer dereference at virtual address
*pde = 346f4067
Oops: 0000 [#1]
Modules linked in: snd_ens1371 snd_rawmidi snd_seq_device
snd_ac97_codec snd_pcm snd_timer snd_page_alloc gameport snd soundcore
ppp_deflate zlib_deflate ppp_async crc_ccitt ppp_generic slhc cdc_acm
parport_pc lp parport autofs4 sunrpc 8139too mii ipt_REJECT ipt_state
ip_conntrack iptable_filter ip_tables floppy sg sd_mod vfat fat dm_mod
usb_storage scsi_mod uhci_hcd video button battery ac r128 md5 ipv6
EIP: 0060:[<c01d7fda>] Not tainted VLI
EFLAGS: 00010286 (2.6.10-1.12_FC2)
EIP is at get_kobj_path_length+0x10/0x25
eax: 00000000 ebx: 00000001 ecx: ffffffff edx: f3de1898
esi: f3f535f8 edi: 00000000 ebp: f3de1898 esp: f3773e38
ds: 007b es: 007b ss: 0068
Process pppd (pid: 4695, threadinfo=f3773000 task=f7139870)
Stack: 000000d0 f3de1874 c01d8046 f3de1874 f3f535e0 f3f535f8 f3de1874
c0242c91 00000000 f486c0ec 00000000 00000000 f3f535e0 c0374a00
f486c0f4 c01d89d3 0000001a f3030053 000003ad f3030000 c0374a20
[<f895b52a>] acm_tty_close+0x95/0xd3 [cdc_acm]
[<f8af629f>] ppp_ccp_closed+0x25e/0x2bb [ppp_generic]
Code: 75 14 89 d8 e8 98 ff ff ff 85 c0 89 c6 74 07 89 d8 e8 a3 c4 fc
ff 5b 89 f0 5e c3 57 89 c2 53 bb 01 00 00 00 8b 3a 31 c0 83 c9 ff <f2>
ae f7 d1 49 8b 52 24 8d 5c 19 01 85 d2 75 e9 89 d8 5b 5f c3
<6>usb 1-2: new full speed USB device using uhci_hcd and address 8
cdc_acm 1-2:1.0: ttyACM1: USB ACM device
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. plug usb cell phone/modem (SANY0 4900)
3. plug back in
Actual Results: I can't use it as a modem after replugging.
Expected Results: I should be able to plug and unplug as many times
as I want. I used to be able to do it with 2.6.9-1.11_FC2
kernel-2.6.10-1.14_FC2 still suffers from this bug. There is a small correction:
Steps to Reproduce:
1. plug usb cell phone/modem (SANY0 4900), which becomes ttyACM0
2. pppd call sprint, which loads ppp stuff
3. unplug, which Oopses the kernel
4. plug the phone back in, which becomes ttyACM1
Since pppd is an important step, I am adding email@example.com
kernel-2.6.10-1.770_FC2 still suffers from this bug. I can now add that to see
the oops you can power off the device, not only unplug it from the usb port. On
the positive note, I am now able to "killall pppd" and restart with "pppd call
sprint", which was impossible before and I had to replug the device. So some
thing gets fixed something gets broken.
This is still happening with kernel-2.6.11-1.14_FC3 (100% reproducible on two
very different machines). Specifically, I get the exact same Oops if I unplug
(or turn off) a cdc_acm device ("ID 22b8:2822 Motorola PCS V.120e GSM Phone")
while pppd is still running.
http://bugzilla.kernel.org/show_bug.cgi?id=4407 has a pair of patches attached
that are supposed to fix this (have not tried them myself yet).
http://bugzilla.kernel.org/show_bug.cgi?id=4418 seems to be a dup of 4407.
System's actions monitored by tail -f /var/log/messages
1. Plug Nokia 6230 + DKU2 (data cable) into 1ns USB port.
2. Phone detected by system as ttyACM0.
3. Use wvdial.
4. Unplug cable from phone.
5. System detects unplugging.
6. Plug cable in phone again.
7. Phone detected by system as ttyACM1.
8. Unplug cable from phone.
9. System detects unplugging.
10. Plug cable into phone again.
11. No any positive or negative reaction from system in /var/log/messages.
12. Plug cable into 2nd usb port.
13. The same as 11.
14. Unplug cable from phone.
15. [loop 10]
After this sequence of actions wvdial alerts "ttyACM0(1): Device busy or ...
After I've applied the patches from
http://bugzilla.kernel.org/show_bug.cgi?id=4407, the problem (the original one,
not a different problem mentioned in comment #4) went away. An FC3 kernel
recompiled with these patches (and software suspend) may be found at
http://rpm.nogin.org/kernel.html (kernel-2.6.11-1.14_FC3 and above).
Reproduced in and advanced to Fedora Core 4.
OSDL's bug 4407 is indeed the same with a fix pending/merged.
[This comment has been added as a mass update for all FC4 kernel bugs.
If you have migrated this bug from an FC3 bug today, ignore this comment.]
Please retest your problem with todays 2.6.12-1.1398_FC4 update.
If your problem involved being unable to boot, or some hardware not being
detected correctly, please make sure your /etc/modprobe.conf is correct *BEFORE*
installing any kernel updates.
If in doubt, you can recreate this file using..
mv /etc/sysconfig/hwconf /etc/sysconfig/hwconf.bak
mv /etc/modprobe.conf /etc/modprobe.conf.bak
This oops lives on in 2.6.12-1.1398_FC4.
There seems to be some activity upstream bedore 2.6.13
According to the upstream entry, this is now fixed in 2.6.13-rc4
Alright! It's finally fixed in 2.6.13-1.1524_FC4 in updates/testing/4.
This was tested by hot-unplugging Sanyo 4920 from underneath pppd -- no oops
happened and pppd died gracefully.
This will be my last (positive!) input on this bug. I am DSL now. I will use
my phone just for phone calls now.