[lkml]   [2019]   [Sep]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH 1/7] modpost: fix broken sym->namespace for external module builds
On Fri, Sep 27, 2019 at 6:37 PM Masahiro Yamada
<> wrote:
> Currently, external module builds produce tons of false-positives:
> WARNING: module <mod> uses symbol <sym> from namespace <ns>, but does not import it.
> Here, the <ns> part shows a random string.
> When you build external modules, the symbol info of vmlinux and
> in-kernel modules are read from $(objtree)/Module.symvers, but
> read_dump() is buggy in multiple ways:
> [1] When the modpost is run for vmlinux and in-kernel modules,
> sym_extract_namespace() correctly allocates memory for the namespace.
> On the other hand, read_dump() does not, then sym->namespace will
> point to somewhere in the line buffer of get_next_line(). The data
> in the buffer will be replaced soon, and sym->namespace will end up
> with pointing to unrelated data. As a result, check_exports() will
> show random strings in the warning messages.
> [2] When there is no namespace, sym_extract_namespace() returns NULL.
> On the other hand, read_dump() sets namespace to an empty string "".
> (but, it will be later replaced with unrelated data due to bug [1].)
> The check_exports() shows a warning unless exp->namespace is NULL,
> so every symbol read from read_dump() emits the warning, which is
> mostly false positive.
> To address [1], I added NOFAIL(strdup(...)) to allocate memory.
> For [2], I changed the if-conditional in check_exports().
> Signed-off-by: Masahiro Yamada <>
> ---

Fixes: cb9b55d21fe0 ("modpost: add support for symbol namespaces")

Best Regards
Masahiro Yamada

 \ /
  Last update: 2019-09-27 11:58    [W:0.179 / U:12.968 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site