On Mon, Jun 14, 2021 at 05:08:39PM +0200, Christoph Hellwig wrote: > Currently really_probe() returns 1 on success and 0 if the probe() call > fails. This return code arrangement is designed to be useful for > __device_attach_driver() which is walking the device list and trying every > driver. 0 means to keep trying. > > However, it is not useful for the other places that call through to > really_probe() that do actually want to see the probe() return code. > > For instance bind_store() would be better to return the actual error code > from the driver's probe method, not discarding it and returning -ENODEV. > > Reorganize things so that really_probe() returns the error code from > ->probe as a (inverted) positive number, and 0 for successful attach. > > With this, __device_attach_driver can ignore the (positive) probe errors, > return 1 to exit the loop for a successful binding and pass on the > other negative errors, while device_driver_attach simplify inverts the > positive errors and returns all errors to the sysfs code. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- > drivers/base/bus.c | 6 +----- > drivers/base/dd.c | 29 ++++++++++++++++++++--------- > 2 files changed, 21 insertions(+), 14 deletions(-) Reviewed-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>