2.6.39-rc6-mmotm0506 and -next - __kfree_rcu breaks third-party kernel code

From: Valdis . Kletnieks
Date: Mon May 09 2011 - 11:05:28 EST


So I have a third-party kernel module which wants to check what kernel version
it's building against, and it fails to build under -rc6-mmotm0506 (it works
just fine under -rc5-mmotm0429).

I finally isolated it down to a two-liner section of code, which seems to die
because somebody didn't include something that rcupdate.h wanted to see:

cat > /tmp/kernconf.c <<EOF
#include <linux/version.h>
#include <linux/utsname.h>
EOF
+ cat

# This builds fine
kern="2.6.39-rc5-mmotm0429"
+ kern=2.6.39-rc5-mmotm0429
cc -D__KERNEL__ -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/4.6.0/include -I/lib/modules/${kern}/build/include -include /lib/modules/${kern}/build/include/generated/autoconf.h -I/lib/modules/${kern}/build/arch/x86/include -c /tmp/kernconf.c
+ cc -D__KERNEL__ -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/4.6.0/include -I/lib/modules/2.6.39-rc5-mmotm0429/build/include -include /lib/modules/2.6.39-rc5-mmotm0429/build/include/generated/autoconf.h -I/lib/modules/2.6.39-rc5-mmotm0429/build/arch/x86/include -c /tmp/kernconf.c

# this one dies
kern="2.6.39-rc6-mmotm0506"
+ kern=2.6.39-rc6-mmotm0506
cc -D__KERNEL__ -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/4.6.0/include -I/lib/modules/${kern}/build/include -include /lib/modules/${kern}/build/include/generated/autoconf.h -I/lib/modules/${kern}/build/arch/x86/include -c /tmp/kernconf.c
+ cc -D__KERNEL__ -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/4.6.0/include -I/lib/modules/2.6.39-rc6-mmotm0506/build/include -include /lib/modules/2.6.39-rc6-mmotm0506/build/include/generated/autoconf.h -I/lib/modules/2.6.39-rc6-mmotm0506/build/arch/x86/include -c /tmp/kernconf.c
In file included from /lib/modules/2.6.39-rc6-mmotm0506/build/include/linux/sem.h:81:0,
from /lib/modules/2.6.39-rc6-mmotm0506/build/include/linux/sched.h:72,
from /lib/modules/2.6.39-rc6-mmotm0506/build/include/linux/utsname.h:35,
from /tmp/kernconf.c:2:
/lib/modules/2.6.39-rc6-mmotm0506/build/include/linux/rcupdate.h: In function '__kfree_rcu':
/lib/modules/2.6.39-rc6-mmotm0506/build/include/linux/rcupdate.h:822:2: error: size of unnamed array is negative

rm /tmp/kernconf.c
+ rm /tmp/kernconf.c

'git blame include/linux/rcudate.h' points at this commit:

commit 896d4eb94e0b7cd896ee92c380fadc1e9d867cfc
Author: Lai Jiangshan <laijs@xxxxxxxxxxxxxx>
Date: Fri Mar 18 11:15:47 2011 +0800

rcu: introduce kfree_rcu()


Attachment: pgp00000.pgp
Description: PGP signature