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

Commit 9104476e authored by Alexey Starikovskiy's avatar Alexey Starikovskiy Committed by Linus Torvalds
Browse files

ACPI: Battery: remove cycle from battery removal.



get_property() should not call battery_update(), it also should call
get_status() only if battery is present to avoid cycle and oops.

Signed-off-by: default avatarAlexey Starikovskiy <astarikovskiy@suse.de>
Tested-by: default avatarRolf Eike Beer <eike-kernel@sf-tec.de>
Acked-by: default avatarJohannes Weiner <hannes@saeurebad.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 0b832a4b
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -132,7 +132,7 @@ static int acpi_battery_technology(struct acpi_battery *battery)
	return POWER_SUPPLY_TECHNOLOGY_UNKNOWN;
}

static int acpi_battery_update(struct acpi_battery *battery);
static int acpi_battery_get_state(struct acpi_battery *battery);

static int acpi_battery_get_property(struct power_supply *psy,
				     enum power_supply_property psp,
@@ -140,10 +140,11 @@ static int acpi_battery_get_property(struct power_supply *psy,
{
	struct acpi_battery *battery = to_acpi_battery(psy);

	if ((!acpi_battery_present(battery)) &&
	     psp != POWER_SUPPLY_PROP_PRESENT)
	if (acpi_battery_present(battery)) {
		/* run battery update only if it is present */
		acpi_battery_get_state(battery);
	} else if (psp != POWER_SUPPLY_PROP_PRESENT)
		return -ENODEV;
	acpi_battery_update(battery);
	switch (psp) {
	case POWER_SUPPLY_PROP_STATUS:
		if (battery->state & 0x01)
@@ -457,6 +458,7 @@ static void sysfs_remove_battery(struct acpi_battery *battery)
		return;
	device_remove_file(battery->bat.dev, &alarm_attr);
	power_supply_unregister(&battery->bat);
	battery->bat.dev = NULL;
}

static int acpi_battery_update(struct acpi_battery *battery)