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/ recipe for target 'net/wireless/shipped-certs.o' failed
make[3]: *** [net/wireless/shipped-certs.o] Error 1
scripts/ 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