Thread (75 messages) 75 messages, 9 authors, 2020-06-29

Re: [PATCH v4 01/11] acpi: thermal: Fix error handling in the register function

From: "Rafael J. Wysocki" <rafael@kernel.org>
Date: 2020-06-24 12:56:43

On Thu, May 28, 2020 at 9:24 PM Andrzej Pietrasiewicz
[off-list ref] wrote:
The acpi_thermal_register_thermal_zone() is missing any error handling.
This needs to be fixed.

Signed-off-by: Andrzej Pietrasiewicz <redacted>
Does anything in the rest of the series depend on this patch?

I'd rather route it through the ACPI tree.
quoted hunk ↗ jump to hunk
---
 drivers/acpi/thermal.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 19067a5e5293..6de8066ca1e7 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -901,23 +901,35 @@ static int acpi_thermal_register_thermal_zone(struct acpi_thermal *tz)
        result = sysfs_create_link(&tz->device->dev.kobj,
                                   &tz->thermal_zone->device.kobj, "thermal_zone");
        if (result)
-               return result;
+               goto unregister_tzd;

        result = sysfs_create_link(&tz->thermal_zone->device.kobj,
                                   &tz->device->dev.kobj, "device");
        if (result)
-               return result;
+               goto remove_tz_link;

        status =  acpi_bus_attach_private_data(tz->device->handle,
                                               tz->thermal_zone);
-       if (ACPI_FAILURE(status))
-               return -ENODEV;
+       if (ACPI_FAILURE(status)) {
+               result = -ENODEV;
+               goto remove_dev_link;
+       }

        tz->tz_enabled = 1;

        dev_info(&tz->device->dev, "registered as thermal_zone%d\n",
                 tz->thermal_zone->id);
+
        return 0;
+
+remove_dev_link:
+       sysfs_remove_link(&tz->thermal_zone->device.kobj, "device");
+remove_tz_link:
+       sysfs_remove_link(&tz->device->dev.kobj, "thermal_zone");
+unregister_tzd:
+       thermal_zone_device_unregister(tz->thermal_zone);
+
+       return result;
 }

 static void acpi_thermal_unregister_thermal_zone(struct acpi_thermal *tz)
--
2.17.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help