error: redefinition of âshipped_regdb_certsâ

From: Michal Hocko
Date: Tue Dec 19 2017 - 02:45:17 EST


Hi Johannes,
this is the first time I am seeing this with the current Linus
tree. 4.15-rc3 compiled fine. I have checked that you have updated the
makefile which generates the file by 715a12334764 ("wireless: don't
write C files on failures").

I am getting the following compilation error:
CC [M] net/wireless/shipped-certs.o
net/wireless/shipped-certs.c:686:10: error: redefinition of âshipped_regdb_certsâ
const u8 shipped_regdb_certs[] = {
^~~~~~~~~~~~~~~~~~~
net/wireless/shipped-certs.c:2:10: note: previous definition of âshipped_regdb_certsâ was here
const u8 shipped_regdb_certs[] = {
^~~~~~~~~~~~~~~~~~~
net/wireless/shipped-certs.c:1368:14: error: redefinition of âshipped_regdb_certs_lenâ
unsigned int shipped_regdb_certs_len = sizeof(shipped_regdb_certs);
^~~~~~~~~~~~~~~~~~~~~~~
net/wireless/shipped-certs.c:684:14: note: previous definition of âshipped_regdb_certs_lenâ was here
unsigned int shipped_regdb_certs_len = sizeof(shipped_regdb_certs);
^~~~~~~~~~~~~~~~~~~~~~~
scripts/Makefile.build:310: recipe for target 'net/wireless/shipped-certs.o' failed
make[3]: *** [net/wireless/shipped-certs.o] Error 1
scripts/Makefile.build:569: recipe for target 'net/wireless' failed
make[2]: *** [net/wireless] Error 2
Makefile:1012: recipe for target 'net' failed
make[1]: *** [net] Error 2

I have no idea how the generated file is supposed to work but it seems
that the cleanup doesn't work properly. Compilation succeeds if I
remove the file and it is generated again:

$ rm net/wireless/shipped-certs.c
[...]
GEN net/wireless/shipped-certs.c
CC [M] net/wireless/shipped-certs.o

I have double checked that neither make clean/distclean removed the
file. Strangely enough neither did the tree with 715a12334764 reverted.

Any idea?
--
Michal Hocko
SUSE Labs