mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-10 07:10:27 +00:00
dmi-id: fix for __you_cannot_kmalloc_that_much failure
gcc 3.2 has a hard time coping with the code in dmi_id_init(): drivers/built-in.o(.init.text+0x789e): In function `dmi_id_init': : undefined reference to `__you_cannot_kmalloc_that_much' make: *** [.tmp_vmlinux1] Error 1 Moving half of the code to a separate function seems to help. This is a no-op for gcc 4.1 which will successfully inline the code anyway. Signed-off-by: Jean Delvare <khali@linux-fr.org> Cc: Dave Airlie <airlied@linux.ie> Tested-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
83a08e7c6e
commit
ce8c628aba
@ -175,12 +175,11 @@ static struct device *dmi_dev;
|
|||||||
|
|
||||||
extern int dmi_available;
|
extern int dmi_available;
|
||||||
|
|
||||||
static int __init dmi_id_init(void)
|
/* In a separate function to keep gcc 3.2 happy - do NOT merge this in
|
||||||
|
dmi_id_init! */
|
||||||
|
static void __init dmi_id_init_attr_table(void)
|
||||||
{
|
{
|
||||||
int ret, i;
|
int i;
|
||||||
|
|
||||||
if (!dmi_available)
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
/* Not necessarily all DMI fields are available on all
|
/* Not necessarily all DMI fields are available on all
|
||||||
* systems, hence let's built an attribute table of just
|
* systems, hence let's built an attribute table of just
|
||||||
@ -205,6 +204,16 @@ static int __init dmi_id_init(void)
|
|||||||
ADD_DMI_ATTR(chassis_serial, DMI_CHASSIS_SERIAL);
|
ADD_DMI_ATTR(chassis_serial, DMI_CHASSIS_SERIAL);
|
||||||
ADD_DMI_ATTR(chassis_asset_tag, DMI_CHASSIS_ASSET_TAG);
|
ADD_DMI_ATTR(chassis_asset_tag, DMI_CHASSIS_ASSET_TAG);
|
||||||
sys_dmi_attributes[i++] = &sys_dmi_modalias_attr.attr;
|
sys_dmi_attributes[i++] = &sys_dmi_modalias_attr.attr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int __init dmi_id_init(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (!dmi_available)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
dmi_id_init_attr_table();
|
||||||
|
|
||||||
ret = class_register(&dmi_class);
|
ret = class_register(&dmi_class);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user