diff mbox series

firmware_loader: re-export fw_fallback_config into firmware_loader's own namespace

Message ID 20200423203140.19510-1-mcgrof@kernel.org
State New, archived
Headers show
Series firmware_loader: re-export fw_fallback_config into firmware_loader's own namespace | expand

Commit Message

Luis Chamberlain April 23, 2020, 8:31 p.m. UTC
From: Luis Chamberlain <mcgrof@kernel.org>

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@lst.de>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Fixes: "firmware_loader: remove unused exports"
Reported-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
 drivers/base/firmware_loader/fallback.c       | 3 +++
 drivers/base/firmware_loader/fallback_table.c | 1 +
 2 files changed, 4 insertions(+)

Comments

Randy Dunlap April 23, 2020, 8:42 p.m. UTC | #1
On 4/23/20 1:31 PM, Luis R. Rodriguez wrote:
> From: Luis Chamberlain <mcgrof@kernel.org>
> 
> 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@lst.de>
> Cc: Randy Dunlap <rdunlap@infradead.org>
> Cc: Stephen Rothwell <sfr@canb.auug.org.au>
> Fixes: "firmware_loader: remove unused exports"
> Reported-by: Randy Dunlap <rdunlap@infradead.org>
> Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>

Acked-by: Randy Dunlap <rdunlap@infradead.org>
Tested-by: Randy Dunlap <rdunlap@infradead.org>

thanks.

> ---
>  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 */
> 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);
>  
>  #ifdef CONFIG_SYSCTL
>  struct ctl_table firmware_config_table[] = {
>
Jakub Kicinski April 24, 2020, 1:05 a.m. UTC | #2
On Thu, 23 Apr 2020 20:31:40 +0000 Luis R. Rodriguez wrote:
> From: Luis Chamberlain <mcgrof@kernel.org>
> 
> 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@lst.de>
> Cc: Randy Dunlap <rdunlap@infradead.org>
> Cc: Stephen Rothwell <sfr@canb.auug.org.au>
> Fixes: "firmware_loader: remove unused exports"

Can't help but notice this strange form of the Fixes tag, is it
intentional?

> Reported-by: Randy Dunlap <rdunlap@infradead.org>
> Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
Luis Chamberlain April 24, 2020, 2:14 a.m. UTC | #3
On Thu, Apr 23, 2020 at 06:05:44PM -0700, Jakub Kicinski wrote:
> On Thu, 23 Apr 2020 20:31:40 +0000 Luis R. Rodriguez wrote:
> > From: Luis Chamberlain <mcgrof@kernel.org>
> > 
> > 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@lst.de>
> > Cc: Randy Dunlap <rdunlap@infradead.org>
> > Cc: Stephen Rothwell <sfr@canb.auug.org.au>
> > Fixes: "firmware_loader: remove unused exports"
> 
> Can't help but notice this strange form of the Fixes tag, is it
> intentional?

Yeah, no there is no commit for the patch as the commit is ephemeral in
a development tree not yet upstream, ie, not on Linus' tree yet. Using a
commit here then makes no sense unless one wants to use a reference
development tree in this case, as development trees are expected to
rebase to move closer towards Linus' tree. When a tree rebases, the
commit IDs change, and this is why the commit is ephemeral unless
one uses a base tree / branch / tag.

  Luis
Jakub Kicinski April 24, 2020, 2:27 a.m. UTC | #4
On Fri, 24 Apr 2020 02:14:20 +0000 Luis Chamberlain wrote:
> On Thu, Apr 23, 2020 at 06:05:44PM -0700, Jakub Kicinski wrote:
> > On Thu, 23 Apr 2020 20:31:40 +0000 Luis R. Rodriguez wrote:  
> > > From: Luis Chamberlain <mcgrof@kernel.org>
> > > 
> > > 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@lst.de>
> > > Cc: Randy Dunlap <rdunlap@infradead.org>
> > > Cc: Stephen Rothwell <sfr@canb.auug.org.au>
> > > Fixes: "firmware_loader: remove unused exports"  
> > 
> > Can't help but notice this strange form of the Fixes tag, is it
> > intentional?  
> 
> Yeah, no there is no commit for the patch as the commit is ephemeral in
> a development tree not yet upstream, ie, not on Linus' tree yet. Using a
> commit here then makes no sense unless one wants to use a reference
> development tree in this case, as development trees are expected to
> rebase to move closer towards Linus' tree. When a tree rebases, the
> commit IDs change, and this is why the commit is ephemeral unless
> one uses a base tree / branch / tag.

I'd think that either the commit is rebase-able and the fix can be
squashed into it, or it's not and it has a stable commit id. 
But I guess it may get tricky around the edges..
Luis Chamberlain April 24, 2020, 2:31 a.m. UTC | #5
On Thu, Apr 23, 2020 at 07:27:16PM -0700, Jakub Kicinski wrote:
> On Fri, 24 Apr 2020 02:14:20 +0000 Luis Chamberlain wrote:
> > On Thu, Apr 23, 2020 at 06:05:44PM -0700, Jakub Kicinski wrote:
> > > On Thu, 23 Apr 2020 20:31:40 +0000 Luis R. Rodriguez wrote:  
> > > > From: Luis Chamberlain <mcgrof@kernel.org>
> > > > 
> > > > 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@lst.de>
> > > > Cc: Randy Dunlap <rdunlap@infradead.org>
> > > > Cc: Stephen Rothwell <sfr@canb.auug.org.au>
> > > > Fixes: "firmware_loader: remove unused exports"  
> > > 
> > > Can't help but notice this strange form of the Fixes tag, is it
> > > intentional?  
> > 
> > Yeah, no there is no commit for the patch as the commit is ephemeral in
> > a development tree not yet upstream, ie, not on Linus' tree yet. Using a
> > commit here then makes no sense unless one wants to use a reference
> > development tree in this case, as development trees are expected to
> > rebase to move closer towards Linus' tree. When a tree rebases, the
> > commit IDs change, and this is why the commit is ephemeral unless
> > one uses a base tree / branch / tag.
> 
> I'd think that either the commit is rebase-able and the fix can be
> squashed into it, or it's not and it has a stable commit id. 
> But I guess it may get tricky around the edges..

I'll let Greg decide ;)

I did my part.

  Luis
Stephen Rothwell April 24, 2020, 3:15 a.m. UTC | #6
Hi Luis,

On Fri, 24 Apr 2020 02:14:20 +0000 Luis Chamberlain <mcgrof@kernel.org> wrote:
>
> > > Fixes: "firmware_loader: remove unused exports"  
> > 
> > Can't help but notice this strange form of the Fixes tag, is it
> > intentional?  
> 
> Yeah, no there is no commit for the patch as the commit is ephemeral in
> a development tree not yet upstream, ie, not on Linus' tree yet. Using a
> commit here then makes no sense unless one wants to use a reference
> development tree in this case, as development trees are expected to
> rebase to move closer towards Linus' tree. When a tree rebases, the
> commit IDs change, and this is why the commit is ephemeral unless
> one uses a base tree / branch / tag.

That commit is in Greg's driver-core tree which never rebases, so the
SHA1 can be considered immutable.  This is (should be) true for most
trees that are published in linux-next (I know it is not true for some).
Luis Chamberlain April 24, 2020, 3:19 a.m. UTC | #7
On Fri, Apr 24, 2020 at 01:15:56PM +1000, Stephen Rothwell wrote:
> Hi Luis,
> 
> On Fri, 24 Apr 2020 02:14:20 +0000 Luis Chamberlain <mcgrof@kernel.org> wrote:
> >
> > > > Fixes: "firmware_loader: remove unused exports"  
> > > 
> > > Can't help but notice this strange form of the Fixes tag, is it
> > > intentional?  
> > 
> > Yeah, no there is no commit for the patch as the commit is ephemeral in
> > a development tree not yet upstream, ie, not on Linus' tree yet. Using a
> > commit here then makes no sense unless one wants to use a reference
> > development tree in this case, as development trees are expected to
> > rebase to move closer towards Linus' tree. When a tree rebases, the
> > commit IDs change, and this is why the commit is ephemeral unless
> > one uses a base tree / branch / tag.
> 
> That commit is in Greg's driver-core tree which never rebases, so the
> SHA1 can be considered immutable.  This is (should be) true for most
> trees that are published in linux-next (I know it is not true for some).

Cool, but once merged on Linus' tree, I think it gets yet-another-commit
ID right? So someone looking for:

git show commit-id-on-gregs-driver-core-tree

It would not work? Or would it?

  Luis
Stephen Rothwell April 24, 2020, 4:08 a.m. UTC | #8
Hi Luis,

On Fri, 24 Apr 2020 03:19:59 +0000 Luis Chamberlain <mcgrof@kernel.org> wrote:
>
> Cool, but once merged on Linus' tree, I think it gets yet-another-commit
> ID right? So someone looking for:

No, Linus merges Greg's tree directly, so all the commits remain the same.
Christoph Hellwig April 24, 2020, 6:57 a.m. UTC | #9
Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>
Greg KH April 24, 2020, 9:21 a.m. UTC | #10
On Thu, Apr 23, 2020 at 08:31:40PM +0000, Luis R. Rodriguez wrote:
> From: Luis Chamberlain <mcgrof@kernel.org>
> 
> 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@lst.de>
> Cc: Randy Dunlap <rdunlap@infradead.org>
> Cc: Stephen Rothwell <sfr@canb.auug.org.au>
> Fixes: "firmware_loader: remove unused exports"
> Reported-by: Randy Dunlap <rdunlap@infradead.org>
> Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
> ---
>  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?

> 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.

thanks,

greg k-h
Luis Chamberlain April 24, 2020, 6 p.m. UTC | #11
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@kernel.org>
> > 
> > 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@lst.de>
> > Cc: Randy Dunlap <rdunlap@infradead.org>
> > Cc: Stephen Rothwell <sfr@canb.auug.org.au>
> > Fixes: "firmware_loader: remove unused exports"
> > Reported-by: Randy Dunlap <rdunlap@infradead.org>
> > Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
> > ---
> >  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
diff mbox series

Patch

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 */
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);
 
 #ifdef CONFIG_SYSCTL
 struct ctl_table firmware_config_table[] = {