Bug 147176 - oops (pppd) on unplugging usb cdc_acm device
Summary: oops (pppd) on unplugging usb cdc_acm device
Alias: None
Product: Fedora
Classification: Fedora
Component: kernel   
(Show other bugs)
Version: 4
Hardware: i686 Linux
Target Milestone: ---
Assignee: Dave Jones
QA Contact: Brian Brock
Keywords: Patch
Depends On:
TreeView+ depends on / blocked
Reported: 2005-02-04 17:36 UTC by Alexei Podtelezhnikov
Modified: 2015-01-04 22:16 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2005-09-26 22:07:17 UTC
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

External Trackers
Tracker ID Priority Status Summary Last Updated
Linux Kernel 4407 None None None Never

Description Alexei Podtelezhnikov 2005-02-04 17:36:48 UTC
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
 printing eip:
*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
ext3 jbd
CPU:    0
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
Call Trace:
 [<c01d8046>] kobject_get_path+0xe/0x4a
 [<c0242c91>] class_hotplug+0x43/0x114
 [<c01d89d3>] kobject_hotplug+0x1af/0x339
 [<c01d82f5>] kobject_del+0xd/0x1c
 [<c024301d>] class_device_del+0x97/0xa9
 [<c0243037>] class_device_unregister+0x8/0x10
 [<f895b52a>] acm_tty_close+0x95/0xd3 [cdc_acm]
 [<c021a146>] release_dev+0x1ff/0x829
 [<c0115257>] do_page_fault+0x198/0x4dc
 [<c017841c>] fcntl_setlk+0x246/0x250
 [<c01179b1>] __wake_up+0x78/0xde
 [<f8af629f>] ppp_ccp_closed+0x25e/0x2bb [ppp_generic]
 [<c021acb5>] tty_release+0x7/0xa
 [<c0162843>] __fput+0x4e/0xe7
 [<c016134a>] filp_close+0x59/0x5f
 [<c0103473>] syscall_call+0x7/0xb
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):

How reproducible:

Steps to Reproduce:
1. plug usb cell phone/modem (SANY0 4900) 
2. unplug
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

Additional info:

Comment 1 Alexei Podtelezhnikov 2005-02-25 23:59:53 UTC
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 twoerner@redhat.com

Comment 2 Alexei Podtelezhnikov 2005-03-10 02:15:54 UTC
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. 

Comment 3 Aleksey Nogin 2005-04-17 23:32:44 UTC
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.

Comment 4 Andrey Chulkov 2005-05-13 05:09:52 UTC

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

Comment 5 Aleksey Nogin 2005-05-13 05:50:11 UTC
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).

Comment 6 Alexei Podtelezhnikov 2005-06-20 23:51:26 UTC
Reproduced in and advanced to Fedora Core 4.
OSDL's bug 4407 is indeed the same with a fix pending/merged.

Comment 7 Dave Jones 2005-07-15 21:48:35 UTC
[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

Thank you.

Comment 8 Alexei Podtelezhnikov 2005-07-17 18:24:41 UTC
This oops lives on in 2.6.12-1.1398_FC4.
There seems to be some activity upstream bedore 2.6.13

Comment 9 Aleksey Nogin 2005-08-01 10:59:19 UTC
According to the upstream entry, this is now fixed in 2.6.13-rc4

Comment 10 Alexei Podtelezhnikov 2005-09-26 22:05:18 UTC
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. 

Note You need to log in before you can comment on or make changes to this bug.