Re: nsdeps not working on modules in 5.4-rc1

From: Matthias Maennich
Date: Thu Oct 03 2019 - 06:44:01 EST


Hi Steve!

On Wed, Oct 02, 2019 at 06:54:26PM -0500, Steve French wrote:
And running the build differently, from the root of the git tree
(5.4-rc1) rather than using the Ubuntu 5.4-rc1 headers also fails

e.g. "make M=fs/cifs modules nsdeps"

...
LD [M] fs/cifs/cifs.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: module cifs uses symbol sigprocmask from namespace
_fs/cifs/cache.o), but does not import it.
...
WARNING: module cifs uses symbol posix_test_lock from namespace
cifs/cache.o), but does not import it.
CC [M] fs/cifs/cifs.mod.o
LD [M] fs/cifs/cifs.ko
Building modules, stage 2.
MODPOST 1 modules
./scripts/nsdeps: 34: local: ./fs/cifs/cifsfs.c: bad variable name
make: *** [Makefile:1710: nsdeps] Error 2

Thanks for reporting this. It appears to me you hit a bug that was
recently discovered: when building with `make M=some/subdirectory`,
modpost is misbehaving. Can you try whether this patch series solves
your problems:
https://lore.kernel.org/lkml/20191003075826.7478-1-yamada.masahiro@xxxxxxxxxxxxx/
In particular patch 2/6 out of the series.

Cheers,
Matthias

On Wed, Oct 2, 2019 at 6:45 PM Steve French <smfrench@xxxxxxxxx> wrote:

Following the instructions in Documentation/namespaces to autogenerate
the namespace changes to avoid the multiple build warnings in 5.4-rc1
for my module ... I am not able to get nsdeps to work. For example
in my module directory (fs/cifs) trying to build with nsdeps:

make -C /usr/src/linux-headers-`uname -r` M=`pwd` modules nsdeps

gets the error "cat: ./modules.order: No such file or directory"

This is on Ubuntu 18, running current 5.4-rc1 kernel. It looks like
it is looking for modules.order in the wrong directory (it is present
in fs/cifs - but it looks like it is looking for it in /usr/src where
of course it won't be found)

I am trying to remove the hundreds of new warnings introduced by
namespaces in 5.4-rc1 when building my module e.g.

WARNING: module cifs uses symbol __fscache_acquire_cookie from
namespace .o: $(deps_/home/sfrench/cifs-2.6/fs/cifs/cache.o), but does
not import it.
--
Thanks,

Steve



--
Thanks,

Steve