Messages in this thread | | | From | Nick Desaulniers <> | Date | Thu, 27 Sep 2018 13:05:43 -0700 | Subject | Re: [PATCH] staging: rtl8723bs: Mark ACPI table declaration as used |
| |
On Wed, Sep 26, 2018 at 10:16 PM Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > > On Wed, Sep 26, 2018 at 04:20:55PM -0700, Nathan Chancellor wrote: > > Clang emits the following warning: > > > > drivers/staging/rtl8723bs/os_dep/sdio_intf.c:25:36: warning: variable > > 'acpi_ids' is not needed and will not be emitted > > [-Wunneeded-internal-declaration] > > static const struct acpi_device_id acpi_ids[] = { > > ^ > > 1 warning generated. > > > > Mark acpi_ids with the attribute __used, which makes it clear to Clang > > that we don't want this warning while not inhibiting Clang's dead code > > elimination from removing the unreferenced internal symbol when moving > > the data to the globally available symbol with MODULE_DEVICE_TABLE. > > > > $ nm -S drivers/staging/rtl8723bs/os_dep/sdio_intf.o | grep acpi > > 0000000000000000 0000000000000040 R __mod_acpi__acpi_ids_device_table > > > > Link: https://github.com/ClangBuiltLinux/linux/issues/169 > > Suggested-by: Nick Desaulniers <ndesaulniers@google.com> > > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> > > --- > > drivers/staging/rtl8723bs/os_dep/sdio_intf.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/staging/rtl8723bs/os_dep/sdio_intf.c b/drivers/staging/rtl8723bs/os_dep/sdio_intf.c > > index 6d02904de63f..7c03b69b8ed3 100644 > > --- a/drivers/staging/rtl8723bs/os_dep/sdio_intf.c > > +++ b/drivers/staging/rtl8723bs/os_dep/sdio_intf.c > > @@ -22,7 +22,7 @@ static const struct sdio_device_id sdio_ids[] = > > { SDIO_DEVICE(0x024c, 0xb723), }, > > { /* end: all zeroes */ }, > > }; > > -static const struct acpi_device_id acpi_ids[] = { > > +static const struct acpi_device_id acpi_ids[] __used = { > > Can't we put __used somewhere in the MODULE_DEVICE_TABLE() macro so we > don't have to go adding it to all individual entries?
Maybe; I'm still trying to think of what we could do in that macro to make its arg appear to be used while still being no functional change.
This is not a million-little-commits problem; more like 2 drivers in the whole tree have this problem.
Note that this change that Nathan has DOES NOT need to applied to every driver that uses MODULE_DEVICE_TABLE. Only when the struct has no other references other than JUST being passed to MODULE_DEVICE_TABLE() is this a problem. For an allyesconfig, I only see 2 instances of this case in the whole tree:
https://github.com/ClangBuiltLinux/linux/issues/169 <- this patch is addressing https://github.com/ClangBuiltLinux/linux/issues/178 <- waiting on the results of this patch
If you're ok with this change to two drivers, then: Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> -- Thanks, ~Nick Desaulniers
| |