diff options
author | Len Brown <len.brown@intel.com> | 2008-11-11 21:13:55 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2008-11-11 21:13:55 -0500 |
commit | 50f19e37c38e82c4fd2aa50fedbfa3aac7903e5a (patch) | |
tree | e74830afdd360457b69a05e85cce7144dfa62059 /drivers | |
parent | 597e4fabb0b0c7fdfa7c2d551fd0a797aab7e53b (diff) | |
parent | 4feba70a2c1a1a0c96909f657f48b2e11e682370 (diff) | |
download | linux-50f19e37c38e82c4fd2aa50fedbfa3aac7903e5a.tar.gz linux-50f19e37c38e82c4fd2aa50fedbfa3aac7903e5a.tar.bz2 linux-50f19e37c38e82c4fd2aa50fedbfa3aac7903e5a.zip |
Merge branch 'bugzilla-11539' into release
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/acpi/system.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/drivers/acpi/system.c b/drivers/acpi/system.c index 6d348dce0810..bfc216a11fdd 100644 --- a/drivers/acpi/system.c +++ b/drivers/acpi/system.c @@ -78,9 +78,15 @@ static ssize_t acpi_table_show(struct kobject *kobj, container_of(bin_attr, struct acpi_table_attr, attr); struct acpi_table_header *table_header = NULL; acpi_status status; + char name[ACPI_NAME_SIZE]; + + if (strncmp(table_attr->name, "NULL", 4)) + memcpy(name, table_attr->name, ACPI_NAME_SIZE); + else + memcpy(name, "\0\0\0\0", 4); status = - acpi_get_table(table_attr->name, table_attr->instance, + acpi_get_table(name, table_attr->instance, &table_header); if (ACPI_FAILURE(status)) return -ENODEV; @@ -95,21 +101,24 @@ static void acpi_table_attr_init(struct acpi_table_attr *table_attr, struct acpi_table_header *header = NULL; struct acpi_table_attr *attr = NULL; - memcpy(table_attr->name, table_header->signature, ACPI_NAME_SIZE); + if (table_header->signature[0] != '\0') + memcpy(table_attr->name, table_header->signature, + ACPI_NAME_SIZE); + else + memcpy(table_attr->name, "NULL", 4); list_for_each_entry(attr, &acpi_table_attr_list, node) { - if (!memcmp(table_header->signature, attr->name, - ACPI_NAME_SIZE)) + if (!memcmp(table_attr->name, attr->name, ACPI_NAME_SIZE)) if (table_attr->instance < attr->instance) table_attr->instance = attr->instance; } table_attr->instance++; if (table_attr->instance > 1 || (table_attr->instance == 1 && - !acpi_get_table(table_header-> - signature, 2, - &header))) - sprintf(table_attr->name + 4, "%d", table_attr->instance); + !acpi_get_table + (table_header->signature, 2, &header))) + sprintf(table_attr->name + ACPI_NAME_SIZE, "%d", + table_attr->instance); table_attr->attr.size = 0; table_attr->attr.read = acpi_table_show; |