Re: 2.4.15-final drivers/net/bonding.c includes user space headers

Keith Owens (kaos@ocs.com.au)
Mon, 26 Nov 2001 13:06:37 +1100


On 25 Nov 2001 13:49:33 -0800,
"H. Peter Anvin" <hpa@zytor.com> wrote:
>By author: Keith Owens <kaos@ocs.com.au>
>>
>> 2.4.15-final/drivers/net/bonding.c:188: #include <limits.h>
>>
>> Kernel code must not include use space headers. I thought this had
>> been fixed. It will not compile in 2.5.
>
><limits.h> is one of the compiler-provided headers, i.e. from
>/usr/lib/gcc-lib/*/*/include -- if your kbuild harness don't
>allow those headers to be included, it's broken.

kbuild 2.5 does
'-nostdinc -I/usr/lib/gcc-lib/... gcc version ../include/'
so it allows includes from the compiler headers. The problem is:

bonding.c includes limits.h, picked up from gcc, OK.
limits.h includes syslimits.h from gcc, OK.
syslimits.h tries to include_next <limits.h> to get the user space
limits, not OK.

Any kernel code that includes limits.h or syslimits.h is polluted by
user space headers. net/bonding.c does not even need limits.h.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/