Hello Finn, On Sat, Jul 31, 2021 at 08:32:38PM +1000, Finn Thain wrote:
On Tue, 27 Jul 2021, Uwe Kleine-König wrote:On Tue, Jul 27, 2021 at 07:50:39PM +1000, Finn Thain wrote:On Tue, 27 Jul 2021, Uwe Kleine-König wrote:The driver core only calls a remove callback when the device was successfully bound (aka probed) before. So dev->driver is never NULL.Are you sure dev->driver is non-NULL for the lifetime of the device? A quick glance at device_reprobe() makes me wonder about that.Not for the lifetime of the device, but as long as a driver is bound to the device. device_reprobe() calls device_driver_detach() after which the driver is considered unbound and dev->driver is assigned NULL. (via device_driver_detach -> device_release_driver_internal -> __device_release_driver)Are you saying that this situation does not presently apply to nubus, zorro or superhyway? Or are you saying that the remove callback will never be called in this situation?
I'm saying that if you call device_reprobe() the remove callback is called before dev->driver becomes NULL. So in the remove callback it's safe to assume that dev->driver is non-NULL. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | https://www.pengutronix.de/ |
Attachment:
signature.asc
Description: PGP signature