Re: [PATCH net] net: qmi_wwan: fix Oops while disconnecting
From: Bjørn Mork <hidden>
Date: 2012-06-25 07:24:43
[I don't have anything more to add to the generic usbnet discussion, but want to comment on the qmi_wwan issues] Ming Lei [off-list ref] writes:
Also, the clear of intfdata may not be observed in .manage_power since usb_set_intfdata(, NULL) may be completed after the lock wdm_mutex operation.
True, but irrelevant. The pointer is either valid or NULL. We don't need to care about synchronizing the exact time it is set to NULL. The locking in cdc-wdm will ensure that the pointer is valid while it is in use by .manage_power, because usbnet_disconnect is prevented from continuing with free_netdev() while any caller of .manage_power is running.
So it is only the sync mechanism that works on the race even the check is added in the patch. Putting usb_set_intfdata(, NULL) after driver_info->unbind should be OK, and it is a general solution for the problem.
There is no problem wrt qmi_wwan and intfdata as long as the NULL test is added to .manage_power. Bjørn -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html