A driver without a probe function isn't useful as it can never be used.
Let registering such a driver fail already instead of failing every
binding.
This is only cosmetic as there is no ipack driver without a probe function.
Signed-off-by: Uwe Kleine-König <[email protected]>
---
drivers/ipack/ipack.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/ipack/ipack.c b/drivers/ipack/ipack.c
index 9267a85fee18..eabc4d08792a 100644
--- a/drivers/ipack/ipack.c
+++ b/drivers/ipack/ipack.c
@@ -64,9 +64,6 @@ static int ipack_bus_probe(struct device *device)
struct ipack_device *dev = to_ipack_dev(device);
struct ipack_driver *drv = to_ipack_driver(device->driver);
- if (!drv->ops->probe)
- return -EINVAL;
-
return drv->ops->probe(dev);
}
@@ -252,6 +249,9 @@ EXPORT_SYMBOL_GPL(ipack_bus_unregister);
int ipack_driver_register(struct ipack_driver *edrv, struct module *owner,
const char *name)
{
+ if (!edrv->ops->probe)
+ return -EINVAL;
+
edrv->driver.owner = owner;
edrv->driver.name = name;
edrv->driver.bus = &ipack_bus_type;
base-commit: 5c8fe583cce542aa0b84adc939ce85293de36e5e
--
2.29.2
A driver that only consumes devm-managed resources might well have no
remove callback. Additionally given that the device core ignores the return
value of ipack_bus_remove() stop returning an error code.
Signed-off-by: Uwe Kleine-König <[email protected]>
---
drivers/ipack/ipack.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/ipack/ipack.c b/drivers/ipack/ipack.c
index eabc4d08792a..7de9605cac4f 100644
--- a/drivers/ipack/ipack.c
+++ b/drivers/ipack/ipack.c
@@ -72,10 +72,9 @@ static int ipack_bus_remove(struct device *device)
struct ipack_device *dev = to_ipack_dev(device);
struct ipack_driver *drv = to_ipack_driver(device->driver);
- if (!drv->ops->remove)
- return -EINVAL;
+ if (drv->ops->remove)
+ drv->ops->remove(dev);
- drv->ops->remove(dev);
return 0;
}
--
2.29.2
Hi Uwe,
Thanks for the patches!
Patch series is,
Acked-by: Samuel Iglesias Gonsalvez <[email protected]>
Greg, Would you mind picking this patch series through your char-misc
tree?
Thanks!
Sam
On Sun, 2021-02-07 at 22:55 +0100, Uwe Kleine-König wrote:
> A driver without a probe function isn't useful as it can never be
> used.
> Let registering such a driver fail already instead of failing every
> binding.
>
> This is only cosmetic as there is no ipack driver without a probe
> function.
>
> Signed-off-by: Uwe Kleine-König <[email protected]>
> ---
> drivers/ipack/ipack.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/ipack/ipack.c b/drivers/ipack/ipack.c
> index 9267a85fee18..eabc4d08792a 100644
> --- a/drivers/ipack/ipack.c
> +++ b/drivers/ipack/ipack.c
> @@ -64,9 +64,6 @@ static int ipack_bus_probe(struct device *device)
> struct ipack_device *dev = to_ipack_dev(device);
> struct ipack_driver *drv = to_ipack_driver(device->driver);
>
> - if (!drv->ops->probe)
> - return -EINVAL;
> -
> return drv->ops->probe(dev);
> }
>
> @@ -252,6 +249,9 @@ EXPORT_SYMBOL_GPL(ipack_bus_unregister);
> int ipack_driver_register(struct ipack_driver *edrv, struct module
> *owner,
> const char *name)
> {
> + if (!edrv->ops->probe)
> + return -EINVAL;
> +
> edrv->driver.owner = owner;
> edrv->driver.name = name;
> edrv->driver.bus = &ipack_bus_type;
>
> base-commit: 5c8fe583cce542aa0b84adc939ce85293de36e5e