* Dan Carpenter <dan.carpenter@xxxxxxxxxx> [230614 06:36]: > The -EPROBE_DEFER error path in serial_base_device_init() is a bit > awkward. Before the call to device_initialize(dev) then we need to > manually release all the device resources. And after the call then we > need to call put_device() to release the resources. Doing either one > wrong will result in a leak or a use after free. > > So let's wait to return -EPROBE_DEFER until after the call to > device_initialize(dev) so that way callers do not have to handle > -EPROBE_DEFER as a special case. Now callers can just use put_device() > for clean up. > > The second issue with the -EPROBE_DEFER path is that deferring is not > supposed to be a fatal error, but instead it's normal part of the > init process and the kernel recovers from it automatically. That means > we should not print an error message but just a debug message on this > path. > > Fixes: 539914240a01 ("serial: core: Fix probing serial_base_bus devices") > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> Thanks for fixing these issues: Reviewed-by: Tony Lindgren <tony@xxxxxxxxxxx>