2021-02-07 21:59:54

by Uwe Kleine-König

[permalink] [raw]
Subject: [PATCH v1 1/2] ipack: Fail earlier for drivers without probe function

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


2021-02-07 22:01:05

by Uwe Kleine-König

[permalink] [raw]
Subject: [PATCH v1 2/2] ipack: Handle a driver without remove callback

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

Subject: Re: [Industrypack-devel] [PATCH v1 1/2] ipack: Fail earlier for drivers without probe function

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


Attachments:
signature.asc (849.00 B)
This is a digitally signed message part