> -----Original Message-----
> From: Zhao, Yakui 
> Sent: Friday, February 15, 2008 12:21 PM
> To: Thomas, Sujith
> Cc: [EMAIL PROTECTED]; [email protected]; Zhang, Rui
> Subject: Re: [patch 4/6] ACPI processor: extract return 
> values using PTR_ERR
> 
> On Fri, 2008-02-15 at 10:54 +0530, Thomas, Sujith wrote:
> > From: Thomas Sujith <[EMAIL PROTECTED]>
> > 
> > Need to extract errors using PTR_ERR macro and
> > process accordingly.thermal_cooling_device_register
> > returning NULL means that CONFIG_THERMAL=n and in that
> > case no need to create symbolic links.

> Very good. But is it necessary to check whether the cooling device
> exists before it is unregistered? 

I agree; resending the patch

Subject: ACPI processor : extract return values using PTR_ERR
From: Thomas Sujith <[EMAIL PROTECTED]>

Need to extract errors using PTR_ERR macro and
process accordingly.thermal_cooling_device_register
returning NULL means that CONFIG_THERMAL=n and in that
case no need to create symbolic links.

Signed-off-by: Thomas Sujith <[EMAIL PROTECTED]>
 drivers/acpi/processor_core.c |   37
++++++++++++++++++++++---------------
 1 files changed, 22 insertions(+), 15 deletions(-)

Index: linux-2.6.24/drivers/acpi/processor_core.c
===================================================================
--- linux-2.6.24.orig/drivers/acpi/processor_core.c
+++ linux-2.6.24/drivers/acpi/processor_core.c
@@ -670,21 +670,26 @@ static int __cpuinit acpi_processor_star
 
        pr->cdev = thermal_cooling_device_register("Processor", device,
                                                &processor_cooling_ops);
-       if (pr->cdev)
+       if (IS_ERR(pr->cdev)) {
+               result = PTR_ERR(pr->cdev);
+               goto end;
+       }
+       if (pr->cdev) {
                printk(KERN_INFO PREFIX
                        "%s is registered as cooling_device%d\n",
                        device->dev.bus_id, pr->cdev->id);
-       else
-               goto end;
 
-       result = sysfs_create_link(&device->dev.kobj,
&pr->cdev->device.kobj,
-                                       "thermal_cooling");
-       if (result)
-               return result;
-       result = sysfs_create_link(&pr->cdev->device.kobj,
&device->dev.kobj,
-                                       "device");
-       if (result)
-               return result;
+               result = sysfs_create_link(&device->dev.kobj,
+                                          &pr->cdev->device.kobj,
+                                          "thermal_cooling");
+               if (result)
+                       return result;
+               result = sysfs_create_link(&pr->cdev->device.kobj,
+                                          &device->dev.kobj,
+                                          "device");
+               if (result)
+                       return result;
+       }
 
        if (pr->flags.throttling) {
                printk(KERN_INFO PREFIX "%s [%s] (supports",
@@ -809,10 +814,12 @@ static int acpi_processor_remove(struct 
 
        acpi_processor_remove_fs(device);
 
-       sysfs_remove_link(&device->dev.kobj, "thermal_cooling");
-       sysfs_remove_link(&pr->cdev->device.kobj, "device");
-       thermal_cooling_device_unregister(pr->cdev);
-       pr->cdev = NULL;
+       if (pr->cdev) {
+               sysfs_remove_link(&device->dev.kobj, "thermal_cooling");
+               sysfs_remove_link(&pr->cdev->device.kobj, "device");
+               thermal_cooling_device_unregister(pr->cdev);
+               pr->cdev = NULL;
+       }
 
        processors[pr->id] = NULL;
 

Attachment: [patch 4 of 6] ACPI processor - extract return value using PTR_ERR
Description: [patch 4 of 6] ACPI processor - extract return value using PTR_ERR

Reply via email to