Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ce8c628abadaf16a44953301c68b9f54cf6898cc
Commit:     ce8c628abadaf16a44953301c68b9f54cf6898cc
Parent:     83a08e7c6ed533a47631794e7f618a98094b4129
Author:     Jean Delvare <[EMAIL PROTECTED]>
AuthorDate: Tue Jan 8 15:33:08 2008 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Tue Jan 8 16:10:36 2008 -0800

    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 <[EMAIL PROTECTED]>
    Cc: Dave Airlie <[EMAIL PROTECTED]>
    Tested-by: Kamalesh Babulal <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 drivers/firmware/dmi-id.c |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/drivers/firmware/dmi-id.c b/drivers/firmware/dmi-id.c
index b6e1eb7..bc132d8 100644
--- a/drivers/firmware/dmi-id.c
+++ b/drivers/firmware/dmi-id.c
@@ -175,12 +175,11 @@ static struct device *dmi_dev;
 
 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;
-
-       if (!dmi_available)
-               return -ENODEV;
+       int i;
 
        /* Not necessarily all DMI fields are available on all
         * 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_asset_tag, DMI_CHASSIS_ASSET_TAG);
        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);
        if (ret)
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to