MIPS: IP22: Add missing put_device call
authorLevente Kurusa <levex@linux.com>
Thu, 19 Dec 2013 15:03:27 +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, create a gio_bus_release() that calls kfree on the device argument to
properly kfree() the memory allocated for the device.

[ralf@linux-mips.org: Reformat to Linux coding style and make
gio_bus_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/6261/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/sgi-ip22/ip22-gio.c

index 8e52446286ca7d0a6d8aca43b793607fb7aa2a95..8f1b86d4da84a8f4a4f894e50f61a76ef009554f 100644 (file)
@@ -27,8 +27,14 @@ static struct {
        { .name = "SGI GR2/GR3", .id = 0x7f },
 };
 
+static void gio_bus_release(struct device *dev)
+{
+       kfree(dev);
+}
+
 static struct device gio_bus = {
        .init_name = "gio",
+       .release = &gio_bus_release,
 };
 
 /**
@@ -413,8 +419,10 @@ int __init ip22_gio_init(void)
        int ret;
 
        ret = device_register(&gio_bus);
-       if (ret)
+       if (ret) {
+               put_device(&gio_bus);
                return ret;
+       }
 
        ret = bus_register(&gio_bus_type);
        if (!ret) {