Re: Linux 2.6.24-rc7 Build-Failure at __you_cannot_kmalloc_that_much

From: Balbir Singh
Date: Tue Jan 08 2008 - 04:27:47 EST


Kamalesh Babulal wrote:
> Andrew Morton wrote:
>> On Mon, 07 Jan 2008 16:06:20 +0530 Kamalesh Babulal <kamalesh@xxxxxxxxxxxxxxxxxx> wrote:
>>
>>> The defconfig make fails on x86_64 (AMD box) with following error
>>>
>>> CHK include/linux/utsrelease.h
>>> CALL scripts/checksyscalls.sh
>>> CHK include/linux/compile.h
>>> GEN .version
>>> CHK include/linux/compile.h
>>> UPD include/linux/compile.h
>>> CC init/version.o
>>> LD init/built-in.o
>>> LD .tmp_vmlinux1
>>> drivers/built-in.o(.init.text+0x8d76): In function `dmi_id_init':
>>> : undefined reference to `__you_cannot_kmalloc_that_much'
>>> make: *** [.tmp_vmlinux1] Error 1
>>>
>>>
>>> # gcc --version
>>> gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-59)
>>>
>>> This was reported by Adrian Bunk http://lkml.org/lkml/2007/12/1/39
>> That's odd. afacit the only kmalloc in dmi_id_init() is
>>
>> dmi_dev = kzalloc(sizeof(*dmi_dev), GFP_KERNEL);
>>
>> and even gcc-3.2.3 should be able to get that right.
>>
>> Could you please a) verify that simply removing that line fixes the build
>> error and then b) try to find some way of fixing it?
>>
>> Try replacing `sizeof(*dmi_dev)' with `sizeof(struct dmi_device_attribute)'
>> and any other tricks you can think of to try to make the compiler process
>> the code differently.
>>
>
> removing the line fixes the issue, but changing the sizeof(*dmi_dev) to
> sizeof(struct device) is not helping.
>

Hi, Andrew,

We tried the following, generated stabs information. The size of struct
device is 560 bytes. We found that dead code was not being eliminated
(__you_cannot_kmalloc_that_much), even though no one called that
function. I suspect builtin_constant_p() and dead code elimination as
the root causes of this error.

--
Warm Regards,
Balbir Singh
Linux Technology Center
IBM, ISTL
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/