summaryrefslogtreecommitdiffstats
path: root/drivers/acpi/system.c
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2008-11-11 21:13:55 -0500
committerLen Brown <len.brown@intel.com>2008-11-11 21:13:55 -0500
commit50f19e37c38e82c4fd2aa50fedbfa3aac7903e5a (patch)
treee74830afdd360457b69a05e85cce7144dfa62059 /drivers/acpi/system.c
parent597e4fabb0b0c7fdfa7c2d551fd0a797aab7e53b (diff)
parent4feba70a2c1a1a0c96909f657f48b2e11e682370 (diff)
downloadlinux-50f19e37c38e82c4fd2aa50fedbfa3aac7903e5a.tar.gz
linux-50f19e37c38e82c4fd2aa50fedbfa3aac7903e5a.tar.bz2
linux-50f19e37c38e82c4fd2aa50fedbfa3aac7903e5a.zip
Merge branch 'bugzilla-11539' into release
Diffstat (limited to 'drivers/acpi/system.c')
-rw-r--r--drivers/acpi/system.c25
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;