ACPI: battery: Don't return -EFAIL on broken packages.
Acer BIOS has a bug which is exposed when a dead battery is present. The package template that is used to describe battery status is over-written with sane values when the battery is live. But when the batter is dead, a bogus reference in the template is used. In this case, Linux returns a fault, when instead it should simply return that it doesn't know the missing value. http://bugzilla.kernel.org/show_bug.cgi?id=8573 http://bugzilla.kernel.org/show_bug.cgi?id=10202 Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
bde4f8fa8d
commit
b8a1bdb149
|
@ -293,13 +293,12 @@ static int extract_package(struct acpi_battery *battery,
|
|||
strncpy(ptr, (u8 *)&element->integer.value,
|
||||
sizeof(acpi_integer));
|
||||
ptr[sizeof(acpi_integer)] = 0;
|
||||
} else return -EFAULT;
|
||||
} else
|
||||
*ptr = 0; /* don't have value */
|
||||
} else {
|
||||
if (element->type == ACPI_TYPE_INTEGER) {
|
||||
int *x = (int *)((u8 *)battery +
|
||||
offsets[i].offset);
|
||||
*x = element->integer.value;
|
||||
} else return -EFAULT;
|
||||
int *x = (int *)((u8 *)battery + offsets[i].offset);
|
||||
*x = (element->type == ACPI_TYPE_INTEGER) ?
|
||||
element->integer.value : -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue