Messages in this thread Patch in this message | | | From | Greg Kroah-Hartman <> | Subject | [PATCH] export: fix string handling of namespace in EXPORT_SYMBOL_NS | Date | Sat, 8 Jan 2022 15:04:15 +0100 |
| |
Commit c3a6cf19e695 ("export: avoid code duplication in include/linux/export.h") broke the ability for a defined string to be used as a namespace value. Fix this up by adding another layer of indirection to preserve the previous functionality.
Fixes: c3a6cf19e695 ("export: avoid code duplication in include/linux/export.h") Cc: Miroslav Benes <mbenes@suse.cz> Cc: Emil Velikov <emil.l.velikov@gmail.com> Cc: Jessica Yu <jeyu@kernel.org> Cc: Quentin Perret <qperret@google.com> Cc: Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Matthias Maennich <maennich@google.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- Note, I found this while forward porting an out-of-tree Android kernel patch from 5.4 to 5.10 that used module namespaces to help wall-off vfs symbols from being used by non-filesystem modules. This issue does not affect any in-kernel code, so I am not so sure if it really is needed here, but it does restore the previous functionality that was being used in older kernels so it might be good to put back in case others want to do much the same thing.
include/linux/export.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/include/linux/export.h b/include/linux/export.h index 27d848712b90..9a992809f57d 100644 --- a/include/linux/export.h +++ b/include/linux/export.h @@ -162,8 +162,10 @@ struct kernel_symbol { #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "") #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl") -#define EXPORT_SYMBOL_NS(sym, ns) __EXPORT_SYMBOL(sym, "", #ns) -#define EXPORT_SYMBOL_NS_GPL(sym, ns) __EXPORT_SYMBOL(sym, "_gpl", #ns) +#define _EXPORT_SYMBOL_NS(sym, ns) __EXPORT_SYMBOL(sym, "", #ns) +#define _EXPORT_SYMBOL_NS_GPL(sym, ns) __EXPORT_SYMBOL(sym, "_gpl", #ns) +#define EXPORT_SYMBOL_NS(sym, ns) _EXPORT_SYMBOL_NS(sym, ns) +#define EXPORT_SYMBOL_NS_GPL(sym, ns) _EXPORT_SYMBOL_NS_GPL(sym, ns) #endif /* !__ASSEMBLY__ */ -- 2.34.1
| |