using stock kernel.org 2.6.26.5 on a Dell Latitude D820 laptop (running Gentoo, but shouldnt matter). i'm using a RTL8150 USB NIC with the driver built as a module: ID 0bda:8150 Realtek Semiconductor Corp. RTL8150 Fast Ethernet Adapter if you load the module, then bring up the interface by doing something simple like `ifconfig eth1 192.168.0.1`, then do `rmmod rtl8150`, the driver goes to lunch and forgets to come back. top shows ksoftirqd processing a lot and rmmod using 100% cpu. trying to strace rmmod shows nothing, so something in the kernel is processing a lot on its behalf ...
Created attachment 18049 [details] my kernel config
Created attachment 18050 [details] verbose lsusb output for rtl8150
Reply-To: akpm@linux-foundation.org (switched to email. Please respond via emailed reply-to-all, not via the bugzilla web interface). On Thu, 25 Sep 2008 13:52:44 -0700 (PDT) bugme-daemon@bugzilla.kernel.org wrote: > http://bugzilla.kernel.org/show_bug.cgi?id=11648 > > Summary: rtl8150 module does not unload when interface is up > Product: Drivers > Version: 2.5 > KernelVersion: 2.6.26.5 > Platform: All > OS/Version: Linux > Tree: Mainline > Status: NEW > Severity: normal > Priority: P1 > Component: Network > AssignedTo: jgarzik@pobox.com > ReportedBy: vapier@gentoo.org > > > using stock kernel.org 2.6.26.5 on a Dell Latitude D820 laptop (running > Gentoo, > but shouldnt matter). > > i'm using a RTL8150 USB NIC with the driver built as a module: > ID 0bda:8150 Realtek Semiconductor Corp. RTL8150 Fast Ethernet Adapter > > if you load the module, then bring up the interface by doing something simple > like `ifconfig eth1 192.168.0.1`, then do `rmmod rtl8150`, the driver goes to > lunch and forgets to come back. top shows ksoftirqd processing a lot and > rmmod > using 100% cpu. trying to strace rmmod shows nothing, so something in the > kernel is processing a lot on its behalf ... > I never know who to blame^Wconsult when it comes to USB net drivers.
Hmm, everybody is doing tasklet_kill() in ->close hook. Mike, try tasklet_kill(&dev->tl); before unlink_all_urbs() like pegasus driver is doing.
it does not make a difference. i still get 100% cpu utilization and an unkillable process.