On Fri, Apr 24, 2020 at 11:21:19AM +0200, Greg KH wrote: > On Thu, Apr 23, 2020 at 08:31:40PM +0000, Luis R. Rodriguez wrote: > > From: Luis Chamberlain <mcgrof@xxxxxxxxxx> > > > > Christoph's recent patch "firmware_loader: remove unused exports", which > > is not merged upstream yet, removed two exported symbols. One is fine to > > remove since only built-in code uses it but the other is incorrect. > > > > If CONFIG_FW_LOADER=m so the firmware_loader is modular but > > CONFIG_FW_LOADER_USER_HELPER=y we fail at mostpost with: > > > > ERROR: modpost: "fw_fallback_config" [drivers/base/firmware_loader/firmware_class.ko] undefined! > > > > This happens because the variable fw_fallback_config is built into the > > kernel if CONFIG_FW_LOADER_USER_HELPER=y always, so we need to grant > > access to the firmware loader module by exporting it. > > > > Instead of just exporting it as we used to, take advantage of the new > > kernel symbol namespacing functionality, and export the symbol only to > > the firmware loader private namespace. This would prevent misuses from > > other drivers and makes it clear the goal is to keep this private to > > the firmware loader alone. > > > > Cc: Christoph Hellwig <hch@xxxxxx> > > Cc: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> > > Cc: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> > > Fixes: "firmware_loader: remove unused exports" > > Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> > > Signed-off-by: Luis Chamberlain <mcgrof@xxxxxxxxxx> > > --- > > drivers/base/firmware_loader/fallback.c | 3 +++ > > drivers/base/firmware_loader/fallback_table.c | 1 + > > 2 files changed, 4 insertions(+) > > > > diff --git a/drivers/base/firmware_loader/fallback.c b/drivers/base/firmware_loader/fallback.c > > index 1e9c96e3ed63..d9ac7296205e 100644 > > --- a/drivers/base/firmware_loader/fallback.c > > +++ b/drivers/base/firmware_loader/fallback.c > > @@ -9,6 +9,7 @@ > > #include <linux/umh.h> > > #include <linux/sysctl.h> > > #include <linux/vmalloc.h> > > +#include <linux/module.h> > > > > #include "fallback.h" > > #include "firmware.h" > > @@ -17,6 +18,8 @@ > > * firmware fallback mechanism > > */ > > > > +MODULE_IMPORT_NS(FIRMWARE_LOADER_PRIVATE); > > + > > extern struct firmware_fallback_config fw_fallback_config; > > > > /* These getters are vetted to use int properly */ > > While nice, that does not fix the existing build error that people are > having, right? It does. > > diff --git a/drivers/base/firmware_loader/fallback_table.c b/drivers/base/firmware_loader/fallback_table.c > > index 0a737349f78f..46a731dede6f 100644 > > --- a/drivers/base/firmware_loader/fallback_table.c > > +++ b/drivers/base/firmware_loader/fallback_table.c > > @@ -21,6 +21,7 @@ struct firmware_fallback_config fw_fallback_config = { > > .loading_timeout = 60, > > .old_timeout = 60, > > }; > > +EXPORT_SYMBOL_NS_GPL(fw_fallback_config, FIRMWARE_LOADER_PRIVATE); > > > How about you send a patch that just reverts the single symbol change > first, and then a follow-on patch that does this namespace addition. I > can queue the first one up now, for 5.7-final, and the second one for > 5.8-rc1. Sure. Luis