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>
        .dev_name       = "7segled",
 };
 
+static void tx_7segled_release(struct device *dev)
+{
+       kfree(dev);
+}
+
 static int __init tx_7segled_init_sysfs(void)
 {
        int error, i;
                }
                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;
 }