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

Commit ca9dc8d4 authored by Lukas Wunner's avatar Lukas Wunner Committed by Rafael J. Wysocki
Browse files

ACPI / scan: Fix acpi_bus_id_list bookkeeping



acpi_device_add() allocates and adds an element to acpi_bus_id_list
(or increments the instance count if the device's HID is already
present in the list), but the element is never deleted from the list
nor freed. Fix it.

Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent e399037e
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -471,10 +471,24 @@ static void acpi_device_release(struct device *dev)

static void acpi_device_del(struct acpi_device *device)
{
	struct acpi_device_bus_id *acpi_device_bus_id;

	mutex_lock(&acpi_device_lock);
	if (device->parent)
		list_del(&device->node);

	list_for_each_entry(acpi_device_bus_id, &acpi_bus_id_list, node)
		if (!strcmp(acpi_device_bus_id->bus_id,
			    acpi_device_hid(device))) {
			if (acpi_device_bus_id->instance_no > 0)
				acpi_device_bus_id->instance_no--;
			else {
				list_del(&acpi_device_bus_id->node);
				kfree(acpi_device_bus_id);
			}
			break;
		}

	list_del(&device->wakeup_list);
	mutex_unlock(&acpi_device_lock);