staging: fieldbus: anybus: Refuse registering drivers without .probe()
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Wed, 5 May 2021 20:29:23 +0000 (22:29 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 10 May 2021 09:19:41 +0000 (11:19 +0200)
A driver without .probe() callback could never bind to a device because
anybus_bus_probe() returned an error for such a driver. So refuse to
register such a useless driver.

Reviewed-by: Sven Van Asbroeck <TheSven73@gmail.com>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Link: https://lore.kernel.org/r/20210505202923.198607-2-u.kleine-koenig@pengutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/fieldbus/anybuss/host.c

index de6c287efa030f4642308b768720bf957c773258..0f730efe9a6da69c2c72a6b6a833724981c1d1bc 100644 (file)
@@ -1183,8 +1183,6 @@ static int anybus_bus_probe(struct device *dev)
        struct anybuss_client *adev =
                to_anybuss_client(dev);
 
-       if (!adrv->probe)
-               return -ENODEV;
        return adrv->probe(adev);
 }
 
@@ -1208,6 +1206,9 @@ static struct bus_type anybus_bus = {
 
 int anybuss_client_driver_register(struct anybuss_client_driver *drv)
 {
+       if (!drv->probe)
+               return -ENODEV;
+
        drv->driver.bus = &anybus_bus;
        return driver_register(&drv->driver);
 }