summaryrefslogtreecommitdiffstats
path: root/arch/mips/txx9
diff options
context:
space:
mode:
authorLevente Kurusa <levex@linux.com>2013-12-19 16:03:26 +0100
committerRalf Baechle <ralf@linux-mips.org>2014-07-30 13:27:51 +0200
commitf0a7a2d042807d08e5bcfd3194e74b16810c4def (patch)
treea42c14bd9a29e36073b1317f749376596cfc05ef /arch/mips/txx9
parent1610c8a8f2d3eb5dac5a418356c179d28da4e74e (diff)
downloadlinux-stable-f0a7a2d042807d08e5bcfd3194e74b16810c4def.tar.gz
linux-stable-f0a7a2d042807d08e5bcfd3194e74b16810c4def.tar.bz2
linux-stable-f0a7a2d042807d08e5bcfd3194e74b16810c4def.zip
MIPS: TXx9: 7segled: add missing put_device call
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>
Diffstat (limited to 'arch/mips/txx9')
-rw-r--r--arch/mips/txx9/generic/7segled.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/arch/mips/txx9/generic/7segled.c b/arch/mips/txx9/generic/7segled.c
index 4642f56e70e5..566c58bd44d0 100644
--- a/arch/mips/txx9/generic/7segled.c
+++ b/arch/mips/txx9/generic/7segled.c
@@ -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;
}