Skip to contentSkip to conversation

leds-88pm860x: use devm_kzalloc function

PATCH In review Devendra Naga 2 participants 2 messages Jul 2, 2012 LED

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 leds-88pm860x: use devm_kzalloc function

Using devm_kzalloc will remove all the error checks and the frees are automatically done at the driver unload side.

---

Thanks Bryan for advising me.. ;-)

 drivers/leds/leds-88pm860x.c |    9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)
drivers/leds/leds-88pm860x.c +2 -7
index 5b61aaf..61897cf 100644
@@ -209,7 +209,7 @@ static int pm860x_led_probe(struct platform_device *pdev)
 		return -EINVAL;
 	}
 
-	data = kzalloc(sizeof(struct pm860x_led), GFP_KERNEL);
+	data = devm_kzalloc(&pdev->dev, sizeof(struct pm860x_led), GFP_KERNEL);
 	if (data == NULL)
 		return -ENOMEM;
 	strncpy(data->name, res->name, MFD_NAME_SIZE - 1);
@@ -220,7 +220,6 @@ static int pm860x_led_probe(struct platform_device *pdev)
 	data->port = pdata->flags;
 	if (data->port < 0) {
 		dev_err(&pdev->dev, "check device failed\n");
-		kfree(data);
 		return -EINVAL;
 	}
 
@@ -233,13 +232,10 @@ static int pm860x_led_probe(struct platform_device *pdev)
 	ret = led_classdev_register(chip->dev, &data->cdev);
 	if (ret < 0) {
 		dev_err(&pdev->dev, "Failed to register LED: %d\n", ret);
-		goto out;
+		return ret;
 	}
 	pm860x_led_set(&data->cdev, 0);
 	return 0;
-out:
-	kfree(data);
-	return ret;
 }
 
 static int pm860x_led_remove(struct platform_device *pdev)
@@ -247,7 +243,6 @@ static int pm860x_led_remove(struct platform_device *pdev)
 	struct pm860x_led *data = platform_get_drvdata(pdev);
 
 	led_classdev_unregister(&data->cdev);
-	kfree(data);
 
 	return 0;
 }
Signature · 1 line
1.7.9.5
#1 lore raw
Quoted 3 lines · Devendra Naga

Using devm_kzalloc will remove all the error checks and the frees are automatically done at the driver unload side.

Great, Applied to my for-next branch. Thanks,

-Bryan

Quoted 54 lines

---

Thanks Bryan for advising me.. ;-)

 drivers/leds/leds-88pm860x.c |    9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)
drivers/leds/leds-88pm860x.c +2 -8
index 5b61aaf..61897cf 100644
@@ -209,7 +209,7 @@ static int pm860x_led_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
-       data = kzalloc(sizeof(struct pm860x_led), GFP_KERNEL);
+       data = devm_kzalloc(&pdev->dev, sizeof(struct pm860x_led), GFP_KERNEL);
        if (data == NULL)
                return -ENOMEM;
        strncpy(data->name, res->name, MFD_NAME_SIZE - 1);
@@ -220,7 +220,6 @@ static int pm860x_led_probe(struct platform_device *pdev)
        data->port = pdata->flags;
        if (data->port < 0) {
                dev_err(&pdev->dev, "check device failed\n");
-               kfree(data);
                return -EINVAL;
        }
 
@@ -233,13 +232,10 @@ static int pm860x_led_probe(struct platform_device *pdev)
        ret = led_classdev_register(chip->dev, &data->cdev);
        if (ret < 0) {
                dev_err(&pdev->dev, "Failed to register LED: %d\n", ret);
-               goto out;
+               return ret;
        }
        pm860x_led_set(&data->cdev, 0);
        return 0;
-out:
-       kfree(data);
-       return ret;
 }
 
 static int pm860x_led_remove(struct platform_device *pdev)
@@ -247,7 +243,6 @@ static int pm860x_led_remove(struct platform_device *pdev)
        struct pm860x_led *data = platform_get_drvdata(pdev);
 
        led_classdev_unregister(&data->cdev);
-       kfree(data);
 
        return 0;
 }
--

1.7.9.5

Signature · 4 lines
Bryan Wu <[email protected]>
Kernel Developer    +86.186-168-78255 Mobile
Canonical Ltd.      www.canonical.com
Ubuntu - Linux for human beings | www.ubuntu.com