diff options
Diffstat (limited to 'drivers/firmware')
-rw-r--r-- | drivers/firmware/edd.c | 2 | ||||
-rw-r--r-- | drivers/firmware/efivars.c | 11 | ||||
-rw-r--r-- | drivers/firmware/pcdp.c | 12 | ||||
-rw-r--r-- | drivers/firmware/pcdp.h | 2 |
4 files changed, 16 insertions, 11 deletions
diff --git a/drivers/firmware/edd.c b/drivers/firmware/edd.c index 33b669e6f977..6996476669f1 100644 --- a/drivers/firmware/edd.c +++ b/drivers/firmware/edd.c | |||
@@ -115,7 +115,7 @@ edd_attr_show(struct kobject * kobj, struct attribute *attr, char *buf) | |||
115 | { | 115 | { |
116 | struct edd_device *dev = to_edd_device(kobj); | 116 | struct edd_device *dev = to_edd_device(kobj); |
117 | struct edd_attribute *edd_attr = to_edd_attr(attr); | 117 | struct edd_attribute *edd_attr = to_edd_attr(attr); |
118 | ssize_t ret = 0; | 118 | ssize_t ret = -EIO; |
119 | 119 | ||
120 | if (edd_attr->show) | 120 | if (edd_attr->show) |
121 | ret = edd_attr->show(dev, buf); | 121 | ret = edd_attr->show(dev, buf); |
diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c index 0287ff65963b..33b17c6a46fb 100644 --- a/drivers/firmware/efivars.c +++ b/drivers/firmware/efivars.c | |||
@@ -352,7 +352,7 @@ static ssize_t efivar_attr_show(struct kobject *kobj, struct attribute *attr, | |||
352 | { | 352 | { |
353 | struct efivar_entry *var = to_efivar_entry(kobj); | 353 | struct efivar_entry *var = to_efivar_entry(kobj); |
354 | struct efivar_attribute *efivar_attr = to_efivar_attr(attr); | 354 | struct efivar_attribute *efivar_attr = to_efivar_attr(attr); |
355 | ssize_t ret = 0; | 355 | ssize_t ret = -EIO; |
356 | 356 | ||
357 | if (!capable(CAP_SYS_ADMIN)) | 357 | if (!capable(CAP_SYS_ADMIN)) |
358 | return -EACCES; | 358 | return -EACCES; |
@@ -368,7 +368,7 @@ static ssize_t efivar_attr_store(struct kobject *kobj, struct attribute *attr, | |||
368 | { | 368 | { |
369 | struct efivar_entry *var = to_efivar_entry(kobj); | 369 | struct efivar_entry *var = to_efivar_entry(kobj); |
370 | struct efivar_attribute *efivar_attr = to_efivar_attr(attr); | 370 | struct efivar_attribute *efivar_attr = to_efivar_attr(attr); |
371 | ssize_t ret = 0; | 371 | ssize_t ret = -EIO; |
372 | 372 | ||
373 | if (!capable(CAP_SYS_ADMIN)) | 373 | if (!capable(CAP_SYS_ADMIN)) |
374 | return -EACCES; | 374 | return -EACCES; |
@@ -618,8 +618,8 @@ efivar_create_sysfs_entry(unsigned long variable_name_size, | |||
618 | new_efivar = kmalloc(sizeof(struct efivar_entry), GFP_KERNEL); | 618 | new_efivar = kmalloc(sizeof(struct efivar_entry), GFP_KERNEL); |
619 | 619 | ||
620 | if (!short_name || !new_efivar) { | 620 | if (!short_name || !new_efivar) { |
621 | if (short_name) kfree(short_name); | 621 | kfree(short_name); |
622 | if (new_efivar) kfree(new_efivar); | 622 | kfree(new_efivar); |
623 | return 1; | 623 | return 1; |
624 | } | 624 | } |
625 | memset(short_name, 0, short_name_size+1); | 625 | memset(short_name, 0, short_name_size+1); |
@@ -644,7 +644,8 @@ efivar_create_sysfs_entry(unsigned long variable_name_size, | |||
644 | kobj_set_kset_s(new_efivar, vars_subsys); | 644 | kobj_set_kset_s(new_efivar, vars_subsys); |
645 | kobject_register(&new_efivar->kobj); | 645 | kobject_register(&new_efivar->kobj); |
646 | 646 | ||
647 | kfree(short_name); short_name = NULL; | 647 | kfree(short_name); |
648 | short_name = NULL; | ||
648 | 649 | ||
649 | spin_lock(&efivars_lock); | 650 | spin_lock(&efivars_lock); |
650 | list_add(&new_efivar->list, &efivar_list); | 651 | list_add(&new_efivar->list, &efivar_list); |
diff --git a/drivers/firmware/pcdp.c b/drivers/firmware/pcdp.c index 6d5df6c2efa2..839b44a7e08b 100644 --- a/drivers/firmware/pcdp.c +++ b/drivers/firmware/pcdp.c | |||
@@ -11,6 +11,7 @@ | |||
11 | * published by the Free Software Foundation. | 11 | * published by the Free Software Foundation. |
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/config.h> | ||
14 | #include <linux/acpi.h> | 15 | #include <linux/acpi.h> |
15 | #include <linux/console.h> | 16 | #include <linux/console.h> |
16 | #include <linux/efi.h> | 17 | #include <linux/efi.h> |
@@ -22,12 +23,15 @@ setup_serial_console(struct pcdp_uart *uart) | |||
22 | { | 23 | { |
23 | #ifdef CONFIG_SERIAL_8250_CONSOLE | 24 | #ifdef CONFIG_SERIAL_8250_CONSOLE |
24 | int mmio; | 25 | int mmio; |
25 | static char options[64]; | 26 | static char options[64], *p = options; |
26 | 27 | ||
27 | mmio = (uart->addr.address_space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY); | 28 | mmio = (uart->addr.address_space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY); |
28 | snprintf(options, sizeof(options), "console=uart,%s,0x%lx,%lun%d", | 29 | p += sprintf(p, "console=uart,%s,0x%lx", |
29 | mmio ? "mmio" : "io", uart->addr.address, uart->baud, | 30 | mmio ? "mmio" : "io", uart->addr.address); |
30 | uart->bits ? uart->bits : 8); | 31 | if (uart->baud) |
32 | p += sprintf(p, ",%lu", uart->baud); | ||
33 | if (uart->bits) | ||
34 | p += sprintf(p, "n%d", uart->bits); | ||
31 | 35 | ||
32 | return early_serial_console_init(options); | 36 | return early_serial_console_init(options); |
33 | #else | 37 | #else |
diff --git a/drivers/firmware/pcdp.h b/drivers/firmware/pcdp.h index 863bb6f768c3..1dc7c88b7b4d 100644 --- a/drivers/firmware/pcdp.h +++ b/drivers/firmware/pcdp.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * Definitions for PCDP-defined console devices | 2 | * Definitions for PCDP-defined console devices |
3 | * | 3 | * |
4 | * v1.0a: http://www.dig64.org/specifications/DIG64_HCDPv10a_01.pdf | 4 | * v1.0a: http://www.dig64.org/specifications/DIG64_HCDPv10a_01.pdf |
5 | * v2.0: http://www.dig64.org/specifications/DIG64_HCDPv20_042804.pdf | 5 | * v2.0: http://www.dig64.org/specifications/DIG64_PCDPv20.pdf |
6 | * | 6 | * |
7 | * (c) Copyright 2002, 2004 Hewlett-Packard Development Company, L.P. | 7 | * (c) Copyright 2002, 2004 Hewlett-Packard Development Company, L.P. |
8 | * Khalid Aziz <khalid.aziz@hp.com> | 8 | * Khalid Aziz <khalid.aziz@hp.com> |