From: Eli Billauer Date: Thu, 4 Sep 2014 14:47:46 +0000 (+0300) Subject: staging: xillybus: Improved goto flow for error handling X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=5b09fc96476d7171fdffd5f5cd53da10685fc8e1;p=openwrt%2Fstaging%2Fblogic.git staging: xillybus: Improved goto flow for error handling Suggested-by: Dan Carpenter Signed-off-by: Eli Billauer Reviewed-by: Dan Carpenter Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/xillybus/xillybus_core.c b/drivers/staging/xillybus/xillybus_core.c index fc14b143d413..45dbf07ec7de 100644 --- a/drivers/staging/xillybus/xillybus_core.c +++ b/drivers/staging/xillybus/xillybus_core.c @@ -1837,7 +1837,7 @@ static int xillybus_init_chrdev(struct xilly_endpoint *endpoint, if (rc) { dev_warn(endpoint->dev, "Failed to obtain major/minors"); - goto error1; + return rc; } endpoint->major = major = MAJOR(dev); @@ -1849,7 +1849,7 @@ static int xillybus_init_chrdev(struct xilly_endpoint *endpoint, endpoint->num_channels); if (rc) { dev_warn(endpoint->dev, "Failed to add cdev. Aborting.\n"); - goto error2; + goto unregister_chrdev; } idt++; @@ -1874,7 +1874,8 @@ static int xillybus_init_chrdev(struct xilly_endpoint *endpoint, dev_warn(endpoint->dev, "Failed to create %s device. Aborting.\n", devname); - goto error3; + rc = -ENODEV; + goto unroll_device_create; } } @@ -1882,15 +1883,14 @@ static int xillybus_init_chrdev(struct xilly_endpoint *endpoint, endpoint->num_channels); return 0; /* succeed */ -error3: +unroll_device_create: devnum--; i--; for (; devnum >= 0; devnum--, i--) device_destroy(xillybus_class, MKDEV(major, i)); cdev_del(&endpoint->cdev); -error2: +unregister_chrdev: unregister_chrdev_region(MKDEV(major, minor), endpoint->num_channels); -error1: return rc; }