Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b8a1bdb1 authored by Alexey Starikovskiy's avatar Alexey Starikovskiy Committed by Len Brown
Browse files

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: default avatarAlexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent bde4f8fa
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -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;