greybus: vibrator: fix memory leak in error path
authorJohan Hovold <johan@hovoldconsulting.com>
Tue, 17 Mar 2015 09:55:51 +0000 (10:55 +0100)
committerGreg Kroah-Hartman <greg@kroah.com>
Tue, 17 Mar 2015 21:32:58 +0000 (22:32 +0100)
Fix memory leak in connection_init error path.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
drivers/staging/greybus/vibrator.c

index b6ec9f2..c92c69e 100644 (file)
@@ -127,7 +127,7 @@ static int gb_vibrator_connection_init(struct gb_connection *connection)
                            "vibrator%d", vib->minor);
        if (IS_ERR(dev)) {
                retval = -EINVAL;
-               goto error;
+               goto err_idr_remove;
        }
        vib->dev = dev;
 
@@ -140,12 +140,14 @@ static int gb_vibrator_connection_init(struct gb_connection *connection)
        retval = sysfs_create_group(&dev->kobj, vibrator_groups[0]);
        if (retval) {
                device_unregister(dev);
-               goto error;
+               goto err_idr_remove;
        }
 #endif
 
        return 0;
 
+err_idr_remove:
+       idr_remove(&minors, vib->minor);
 error:
        kfree(vib);
        return retval;