Call thermal_cooling_device_unregister() and sysfs_remove_link() in the
error path of acpi_fan_probe() to fix possible memory leak.
This bug was found by an experimental static analysis tool that I am
developing.
Fixes: 05a83d972293 ("ACPI: register ACPI Fan as generic thermal cooling device")
Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Link: https://patch.msgid.link/20241211032812.210164-1-joe@pf.is.s.u-tokyo.ac.jp
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
 
        result = sysfs_create_link(&pdev->dev.kobj,
                                   &cdev->device.kobj,
                                   "thermal_cooling");
-       if (result)
+       if (result) {
                dev_err(&pdev->dev, "Failed to create sysfs link 'thermal_cooling'\n");
+               goto err_unregister;
+       }
 
        result = sysfs_create_link(&cdev->device.kobj,
                                   &pdev->dev.kobj,
                                   "device");
        if (result) {
                dev_err(&pdev->dev, "Failed to create sysfs link 'device'\n");
-               goto err_end;
+               goto err_remove_link;
        }
 
        return 0;
 
+err_remove_link:
+       sysfs_remove_link(&pdev->dev.kobj, "thermal_cooling");
+err_unregister:
+       thermal_cooling_device_unregister(cdev);
 err_end:
        if (fan->acpi4)
                acpi_fan_delete_attributes(device);