[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220504194245.1088063-3-masahiroy@kernel.org>
Date: Thu, 5 May 2022 04:42:44 +0900
From: Masahiro Yamada <masahiroy@...nel.org>
To: Luis Chamberlain <mcgrof@...nel.org>,
linux-modules@...r.kernel.org, linux-kernel@...r.kernel.org
Cc: Masahiro Yamada <masahiroy@...nel.org>
Subject: [PATCH 2/3] module: do not binary-search in __ksymtab_gpl if fsa->gplok is false
Currently, !fsa->gplok && syms->license == GPL_ONLY) is checked after
bsearch() succeeds.
It is meaningless to do the binary search in the GPL symbol table when
fsa->gplok is false because we know find_exported_symbol_in_section()
will fail anyway.
This check should be done before bsearch().
Signed-off-by: Masahiro Yamada <masahiroy@...nel.org>
---
kernel/module.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/kernel/module.c b/kernel/module.c
index d57beb6b4eee..4380ceb825b9 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -448,8 +448,6 @@ static bool check_exported_symbol(const struct symsearch *syms,
struct module *owner, unsigned int symnum,
struct find_symbol_arg *fsa)
{
- if (!fsa->gplok && syms->license == GPL_ONLY)
- return false;
fsa->owner = owner;
fsa->crc = symversion(syms->crcs, symnum);
fsa->sym = &syms->start[symnum];
@@ -497,6 +495,9 @@ static bool find_exported_symbol_in_section(const struct symsearch *syms,
{
struct kernel_symbol *sym;
+ if (!fsa->gplok && syms->license == GPL_ONLY)
+ return false;
+
sym = bsearch(fsa->name, syms->start, syms->stop - syms->start,
sizeof(struct kernel_symbol), cmp_name);
--
2.32.0
Powered by blists - more mailing lists