Message ID | 20240902101734.3260455-1-leitao@debian.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 77461c10819103eaee7b33c744174b32a8c78b40 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] net: dqs: Do not use extern for unused dql_group | expand |
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 <lkp@intel.com> > Closes: https://lore.kernel.org/oe-kbuild-all/202409012047.eCaOdfQJ-lkp@intel.com/ > Fixes: 74293ea1c4db ("net: sysfs: Do not create sysfs for non BQL device") > Signed-off-by: Breno Leitao <leitao@debian.org> Thanks, I see this with gcc-13.2.0 but, curiously, not 14.2.0. Reviewed-by: Simon Horman <horms@kernel.org> Tested-by: Simon Horman <horms@kernel.org> # build-tested
Hello: This patch was applied to netdev/net.git (main) by Jakub Kicinski <kuba@kernel.org>: On Mon, 2 Sep 2024 03:17:30 -0700 you 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: > > [...] Here is the summary with links: - [net] net: dqs: Do not use extern for unused dql_group https://git.kernel.org/netdev/net/c/77461c108191 You are awesome, thank you!
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index 444f23e74f8e..291fdf4a328b 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c @@ -1524,7 +1524,7 @@ static const struct attribute_group dql_group = { }; #else /* Fake declaration, all the code using it should be dead */ -extern const struct attribute_group dql_group; +static const struct attribute_group dql_group = {}; #endif /* CONFIG_BQL */ #ifdef CONFIG_XPS