|
|
Re: [PATCH net] net: qmi_wwan: fix Oops while disconnecting |
Ming Lei <tom.leiming@xxxxxxxxx> writes: > On Sat, Jun 23, 2012 at 4:45 PM, Bjørn Mork <bjorn@xxxxxxx> wrote: > >> usbnet_disconnect() cannot continue to the point where it frees the >> netdev before wdm_open/wdm_close has completed, because it waits for >> qmi_wwan_unbind which waits for wdm_disconnect. And wdm_disconnect >> takes the both read and write mutexes. > > Thanks for your explanation. > > I see, and your patch is correct, but it might not be generic enough. > > So driver_info->unbind will sync with .open/.close of the subdriver, > just like unregister_netdev will sync with .open/.close of usbnet interface. > > IMO, the general solution is to keep intfdata's lifetime after ->unbind, > which can guarantee that intfdata can be accessed safely in .open/.close > of usbnet interface and the other subdrivers' device. > > Suppose there will be another usbnet driver which has its own subdriver > too, the same trick of checking need to be added again if not taking the > general way of simply removing 'usb_set_intfdata(intf, NULL);' in > usbnet_disconnect. Yes, I guess so. I am just worrying (maybe too much) about the unknown consequences of removing that code in usbnet, not fully understanding why it was there in the first place. And I do not want to take the blame and cleanup work if anything goes wrong :-) Fixing it in qmi_wwan feels much safer. But if you want to remove the 'usb_set_intfdata(intf, NULL)', and the other USB gurus agree, then I'm of course not going to object to that alternative solution to this bug. I still think it's unlikely this will ever hit another driver though. Bjørn -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
[Linux Kernel Discussion] [Ethernet Bridging] [Linux Wireless Networking] [Linux Bluetooth Networking] [Linux Networking Users] [VLAN] [Git] [IETF Annouce] [Linux Assembly] [Security] [Bugtraq] [Photo] [Singles Social Networking] [Yosemite Information] [MIPS Linux] [ARM Linux Kernel] [ARM Linux] [Linux Virtualization] [Linux Security] [Linux IDE] [Linux RAID] [Linux SCSI] [Free Dating]
![]() |
![]() |