2020-12-18 06:53:13

by Dmitry Torokhov

[permalink] [raw]
Subject: [PATCH] Input: da7280 - protect OF match table with CONFIG_OF

The OF match table is only used when OF is enabled.

Fixes: cd3f609823a5 ("Input: new da7280 haptic driver")
Reported-by: kernel test robot <[email protected]>
Signed-off-by: Dmitry Torokhov <[email protected]>
---
drivers/input/misc/da7280.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/input/misc/da7280.c b/drivers/input/misc/da7280.c
index 2f698a8c1d65..b08610d6e575 100644
--- a/drivers/input/misc/da7280.c
+++ b/drivers/input/misc/da7280.c
@@ -1300,11 +1300,13 @@ static int __maybe_unused da7280_resume(struct device *dev)
return retval;
}

+#ifdef CONFIG_OF
static const struct of_device_id da7280_of_match[] = {
{ .compatible = "dlg,da7280", },
{ }
};
MODULE_DEVICE_TABLE(of, da7280_of_match);
+#endif

static const struct i2c_device_id da7280_i2c_id[] = {
{ "da7280", },
--
2.29.2.729.g45daf8777d-goog


--
Dmitry


2020-12-18 16:51:35

by Roy Im

[permalink] [raw]
Subject: RE: [PATCH] Input: da7280 - protect OF match table with CONFIG_OF

On Friday, December 18, 2020 3:50 PM, Dmitry Torokhov wrote:

> The OF match table is only used when OF is enabled.
>
> Fixes: cd3f609823a5 ("Input: new da7280 haptic driver")
> Reported-by: kernel test robot <[email protected]>
> Signed-off-by: Dmitry Torokhov <[email protected]>
> ---
> drivers/input/misc/da7280.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/input/misc/da7280.c b/drivers/input/misc/da7280.c index 2f698a8c1d65..b08610d6e575 100644
> --- a/drivers/input/misc/da7280.c
> +++ b/drivers/input/misc/da7280.c
> @@ -1300,11 +1300,13 @@ static int __maybe_unused da7280_resume(struct device *dev)
> return retval;
> }
>
> +#ifdef CONFIG_OF
> static const struct of_device_id da7280_of_match[] = {
> { .compatible = "dlg,da7280", },
> { }
> };
> MODULE_DEVICE_TABLE(of, da7280_of_match);
> +#endif
>
> static const struct i2c_device_id da7280_i2c_id[] = {
> { "da7280", },
> --
> 2.29.2.729.g45daf8777d-goog
>
>
> --
> Dmitry

Thanks!

Acked-by: Roy Im <[email protected]>

2020-12-20 02:03:17

by Jeff LaBundy

[permalink] [raw]
Subject: Re: [PATCH] Input: da7280 - protect OF match table with CONFIG_OF

Hi Dmitry,

On Fri, Dec 18, 2020 at 04:49:48PM +0000, Roy Im wrote:
> On Friday, December 18, 2020 3:50 PM, Dmitry Torokhov wrote:
>
> > The OF match table is only used when OF is enabled.
> >
> > Fixes: cd3f609823a5 ("Input: new da7280 haptic driver")
> > Reported-by: kernel test robot <[email protected]>
> > Signed-off-by: Dmitry Torokhov <[email protected]>
> > ---
> > drivers/input/misc/da7280.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/input/misc/da7280.c b/drivers/input/misc/da7280.c index 2f698a8c1d65..b08610d6e575 100644
> > --- a/drivers/input/misc/da7280.c
> > +++ b/drivers/input/misc/da7280.c
> > @@ -1300,11 +1300,13 @@ static int __maybe_unused da7280_resume(struct device *dev)
> > return retval;
> > }
> >
> > +#ifdef CONFIG_OF
> > static const struct of_device_id da7280_of_match[] = {
> > { .compatible = "dlg,da7280", },
> > { }
> > };
> > MODULE_DEVICE_TABLE(of, da7280_of_match);
> > +#endif

Just for my own understanding, would it not work just as well
to include of_device.h? This includes mod_devicetable.h which
in turn defines the of_device_id struct (even if CONFIG_OF is
not set).

The reason for asking is because it seems many drivers do not
include these guards.

> >
> > static const struct i2c_device_id da7280_i2c_id[] = {
> > { "da7280", },
> > --
> > 2.29.2.729.g45daf8777d-goog
> >
> >
> > --
> > Dmitry
>
> Thanks!
>
> Acked-by: Roy Im <[email protected]>
>

Kind regards,
Jeff LaBundy

2021-01-04 03:44:52

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: [PATCH] Input: da7280 - protect OF match table with CONFIG_OF

Hi Jeff,

On Sat, Dec 19, 2020 at 08:01:09PM -0600, Jeff LaBundy wrote:
> Hi Dmitry,
>
> On Fri, Dec 18, 2020 at 04:49:48PM +0000, Roy Im wrote:
> > On Friday, December 18, 2020 3:50 PM, Dmitry Torokhov wrote:
> >
> > > The OF match table is only used when OF is enabled.
> > >
> > > Fixes: cd3f609823a5 ("Input: new da7280 haptic driver")
> > > Reported-by: kernel test robot <[email protected]>
> > > Signed-off-by: Dmitry Torokhov <[email protected]>
> > > ---
> > > drivers/input/misc/da7280.c | 2 ++
> > > 1 file changed, 2 insertions(+)
> > >
> > > diff --git a/drivers/input/misc/da7280.c b/drivers/input/misc/da7280.c index 2f698a8c1d65..b08610d6e575 100644
> > > --- a/drivers/input/misc/da7280.c
> > > +++ b/drivers/input/misc/da7280.c
> > > @@ -1300,11 +1300,13 @@ static int __maybe_unused da7280_resume(struct device *dev)
> > > return retval;
> > > }
> > >
> > > +#ifdef CONFIG_OF
> > > static const struct of_device_id da7280_of_match[] = {
> > > { .compatible = "dlg,da7280", },
> > > { }
> > > };
> > > MODULE_DEVICE_TABLE(of, da7280_of_match);
> > > +#endif
>
> Just for my own understanding, would it not work just as well
> to include of_device.h? This includes mod_devicetable.h which
> in turn defines the of_device_id struct (even if CONFIG_OF is
> not set).

The issue here is not that the structure is undefined, but the variable
is unused. We could also fix this by not using of_match_ptr() when
assigning the match table to the driver structure, making the variable
referenced even if CONFIG_OF is off.

>
> The reason for asking is because it seems many drivers do not
> include these guards.

It could be that they are either only compiled with OF, or they decided
it is not worth saving a few bytes, or maybe they are used on ACPI-based
systems with PRP0001 bindings in which case the match table in the
driver might still be needed.

Thanks.

--
Dmitry

2021-01-04 04:15:01

by Jeff LaBundy

[permalink] [raw]
Subject: Re: [PATCH] Input: da7280 - protect OF match table with CONFIG_OF

Hi Dmitry,

On Sun, Jan 03, 2021 at 05:58:41PM -0800, Dmitry Torokhov wrote:
> Hi Jeff,
>
> On Sat, Dec 19, 2020 at 08:01:09PM -0600, Jeff LaBundy wrote:
> > Hi Dmitry,
> >
> > On Fri, Dec 18, 2020 at 04:49:48PM +0000, Roy Im wrote:
> > > On Friday, December 18, 2020 3:50 PM, Dmitry Torokhov wrote:
> > >
> > > > The OF match table is only used when OF is enabled.
> > > >
> > > > Fixes: cd3f609823a5 ("Input: new da7280 haptic driver")
> > > > Reported-by: kernel test robot <[email protected]>
> > > > Signed-off-by: Dmitry Torokhov <[email protected]>
> > > > ---
> > > > drivers/input/misc/da7280.c | 2 ++
> > > > 1 file changed, 2 insertions(+)
> > > >
> > > > diff --git a/drivers/input/misc/da7280.c b/drivers/input/misc/da7280.c index 2f698a8c1d65..b08610d6e575 100644
> > > > --- a/drivers/input/misc/da7280.c
> > > > +++ b/drivers/input/misc/da7280.c
> > > > @@ -1300,11 +1300,13 @@ static int __maybe_unused da7280_resume(struct device *dev)
> > > > return retval;
> > > > }
> > > >
> > > > +#ifdef CONFIG_OF
> > > > static const struct of_device_id da7280_of_match[] = {
> > > > { .compatible = "dlg,da7280", },
> > > > { }
> > > > };
> > > > MODULE_DEVICE_TABLE(of, da7280_of_match);
> > > > +#endif
> >
> > Just for my own understanding, would it not work just as well
> > to include of_device.h? This includes mod_devicetable.h which
> > in turn defines the of_device_id struct (even if CONFIG_OF is
> > not set).
>
> The issue here is not that the structure is undefined, but the variable
> is unused. We could also fix this by not using of_match_ptr() when
> assigning the match table to the driver structure, making the variable
> referenced even if CONFIG_OF is off.

ACK. The call to of_match_ptr() is what I was missing; the other
drivers I was looking at do not use it which must be why the bot
has not complained.

>
> >
> > The reason for asking is because it seems many drivers do not
> > include these guards.
>
> It could be that they are either only compiled with OF, or they decided
> it is not worth saving a few bytes, or maybe they are used on ACPI-based
> systems with PRP0001 bindings in which case the match table in the
> driver might still be needed.

Makes perfect sense; thank you for the follow-up.

>
> Thanks.
>
> --
> Dmitry

Kind regards,
Jeff LaBundy