Subject: Re: [PATCH net] net: dqs: Do not use extern for unused dql_group

From: Simon Horman <[email-masked]>
Date: Mon, 2 Sep 2024 20:02:26 +0100

On Mon, Sep 02, 2024 at 03:17:30AM -0700, Breno Leitao wrote:
> When CONFIG_DQL is not enabled, dql_group should be treated as a dead
> declaration. However, its current extern declaration assumes the linker
> will ignore it, which is generally true across most compiler and
> architecture combinations.
> 
> But in certain cases, the linker still attempts to resolve the extern
> struct, even when the associated code is dead, resulting in a linking
> error. For instance the following error in loongarch64:
> 
> >> loongarch64-linux-ld: net-sysfs.c:(.text+0x589c): undefined reference to `dql_group'
> 
> Modify the declaration of the dead object to be an empty declaration
> instead of an extern. This change will prevent the linker from
> attempting to resolve an undefined reference.
> 
> Reported-by: kernel test robot <[email-masked]>
> Closes: https://lore.kernel.org/oe-kbuild-all/[email-masked]/
> Fixes: 74293ea1c4db ("net: sysfs: Do not create sysfs for non BQL device")
> Signed-off-by: Breno Leitao <[email-masked]>

Thanks,

I see this with gcc-13.2.0 but, curiously, not 14.2.0.

Reviewed-by: Simon Horman <[email-masked]>
Tested-by: Simon Horman <[email-masked]> # build-tested