MIPS: TXx9: 7segled: add missing put_device call
authorLevente Kurusa <levex@linux.com>
Thu, 19 Dec 2013 15:03:26 +0000 (16:03 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Wed, 30 Jul 2014 11:27:51 +0000 (13:27 +0200)
This is required so that we give up the last reference to the device.

Also, add a new tx_7segled_release function which will be called after the
put_device to ensure that device is kfree'd.

[ralf@linux-mips.org: Reformat to Linux coding style and make
tx_7segled_release static.]

Signed-off-by: Levente Kurusa <levex@linux.com>
Cc: LKML <linux-kernel@vger.kernel.org>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/6260/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/txx9/generic/7segled.c

index 4642f56e70e54c38aca1d98df27fee53b7761402..566c58bd44d073e32dfff5b01eb457faededab99 100644 (file)
@@ -83,6 +83,11 @@ static struct bus_type tx_7segled_subsys = {
        .dev_name       = "7segled",
 };
 
+static void tx_7segled_release(struct device *dev)
+{
+       kfree(dev);
+}
+
 static int __init tx_7segled_init_sysfs(void)
 {
        int error, i;
@@ -103,11 +108,14 @@ static int __init tx_7segled_init_sysfs(void)
                }
                dev->id = i;
                dev->bus = &tx_7segled_subsys;
+               dev->release = &tx_7segled_release;
                error = device_register(dev);
-               if (!error) {
-                       device_create_file(dev, &dev_attr_ascii);
-                       device_create_file(dev, &dev_attr_raw);
+               if (error) {
+                       put_device(dev);
+                       return error;
                }
+               device_create_file(dev, &dev_attr_ascii);
+               device_create_file(dev, &dev_attr_raw);
        }
        return error;
 }