diff mbox series

Input: da7280 - protect OF match table with CONFIG_OF

Message ID X9xRLVPt9eBi0CT6@google.com
State New
Headers show
Series Input: da7280 - protect OF match table with CONFIG_OF | expand

Commit Message

Dmitry Torokhov Dec. 18, 2020, 6:50 a.m. UTC
The OF match table is only used when OF is enabled.

Fixes: cd3f609823a5 ("Input: new da7280 haptic driver")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/input/misc/da7280.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Jeff LaBundy Dec. 20, 2020, 2:01 a.m. UTC | #1
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 <lkp@intel.com>

> > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

> > ---

> >  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 <roy.im.opensource@diasemi.com>

> 


Kind regards,
Jeff LaBundy
Dmitry Torokhov Jan. 4, 2021, 1:58 a.m. UTC | #2
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 <lkp@intel.com>

> > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

> > > ---

> > >  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
Jeff LaBundy Jan. 4, 2021, 4:03 a.m. UTC | #3
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 <lkp@intel.com>

> > > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

> > > > ---

> > > >  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
diff mbox series

Patch

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", },