hwmon: (iio_hwmon) fix memory leak in name attribute
authorQuentin Schulz <quentin.schulz@free-electrons.com>
Tue, 26 Jul 2016 07:47:09 +0000 (09:47 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 7 Sep 2016 06:32:46 +0000 (08:32 +0200)
commit 5d17d3b4bbf3becb89fd48b74340a50a39736f6d upstream.

The "name" variable's memory is now freed when the device is destructed
thanks to devm function.

Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com>
Reported-by: Guenter Roeck <linux@roeck-us.net>
Fixes: e0f8a24e0edfd ("staging:iio::hwmon interface client driver.")
Fixes: 61bb53bcbdd86 ("hwmon: (iio_hwmon) Add support for humidity sensors")
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hwmon/iio_hwmon.c

index 17ae2eb26ce21604edf9a1d9df4e24abe01980d6..d5c06f2764f4c89d06607fa74980716c3c1d39a3 100644 (file)
@@ -109,24 +109,24 @@ static int iio_hwmon_probe(struct platform_device *pdev)
 
                switch (type) {
                case IIO_VOLTAGE:
-                       a->dev_attr.attr.name = kasprintf(GFP_KERNEL,
-                                                         "in%d_input",
-                                                         in_i++);
+                       a->dev_attr.attr.name = devm_kasprintf(dev, GFP_KERNEL,
+                                                              "in%d_input",
+                                                              in_i++);
                        break;
                case IIO_TEMP:
-                       a->dev_attr.attr.name = kasprintf(GFP_KERNEL,
-                                                         "temp%d_input",
-                                                         temp_i++);
+                       a->dev_attr.attr.name = devm_kasprintf(dev, GFP_KERNEL,
+                                                              "temp%d_input",
+                                                              temp_i++);
                        break;
                case IIO_CURRENT:
-                       a->dev_attr.attr.name = kasprintf(GFP_KERNEL,
-                                                         "curr%d_input",
-                                                         curr_i++);
+                       a->dev_attr.attr.name = devm_kasprintf(dev, GFP_KERNEL,
+                                                              "curr%d_input",
+                                                              curr_i++);
                        break;
                case IIO_HUMIDITYRELATIVE:
-                       a->dev_attr.attr.name = kasprintf(GFP_KERNEL,
-                                                         "humidity%d_input",
-                                                         humidity_i++);
+                       a->dev_attr.attr.name = devm_kasprintf(dev, GFP_KERNEL,
+                                                              "humidity%d_input",
+                                                              humidity_i++);
                        break;
                default:
                        ret = -EINVAL;