summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYacine Belkadi2012-04-11 17:14:10 +0200
committerYacine Belkadi2012-06-13 16:28:49 +0200
commitb4c5038375914d5546bed0a1cdf1afdbe93f0c53 (patch)
tree3e5d7b3b8ec95d23c5110361887bf9d0a6583563
parent71ee77260de2eece20ceff9b8c1760dcafa62b6e (diff)
cleo/linux/drv/afe/ad986x: refactor probe() with goto(s), refs #3082
Refactor to prepare for subsequent commits.
-rw-r--r--cleopatre/linux-2.6.25.10-spc300/drivers/afe/ad986x.c51
1 files changed, 35 insertions, 16 deletions
diff --git a/cleopatre/linux-2.6.25.10-spc300/drivers/afe/ad986x.c b/cleopatre/linux-2.6.25.10-spc300/drivers/afe/ad986x.c
index 76279ceb85..a277baebc2 100644
--- a/cleopatre/linux-2.6.25.10-spc300/drivers/afe/ad986x.c
+++ b/cleopatre/linux-2.6.25.10-spc300/drivers/afe/ad986x.c
@@ -332,11 +332,13 @@ static inline int ad986x_create_proc_entry(void)
*/
static int __devinit ad986x_probe(struct spi_device *spi)
{
- int res;
+ int ret;
//Check arguments
- if(!spi)
- return -EFAULT;
+ if (!spi) {
+ ret = -EFAULT;
+ goto err_spi;
+ }
spi_dev = spi;
@@ -344,29 +346,46 @@ static int __devinit ad986x_probe(struct spi_device *spi)
spi_dev->bits_per_word = 8;
//Check if someone has already register it
- if(ad986x_miscdev.parent)
- return -EBUSY;
+ if (ad986x_miscdev.parent) {
+ ret = -EBUSY;
+ goto err_miscdev_parent;
+ }
+
ad986x_miscdev.parent = &spi_dev->dev;
//Register a Misc device for ioctl management
- if((res = misc_register(&ad986x_miscdev)) != 0)
- return res;
+ if ((ret = misc_register(&ad986x_miscdev)) != 0)
+ goto err_misc_register;
- if (ad986x_create_proc_entry())
- {
+ if (ad986x_create_proc_entry()) {
dev_err(&spi_dev->dev, "failed to create proc entry\n");
-
- res = misc_deregister(&ad986x_miscdev);
- if (res)
- {
- dev_err(&spi_dev->dev, "failed to unregister misc driver %d\n", res);
- }
- return -EFAULT;
+ ret = -EFAULT;
+ goto err_proc_entry;
}
dev_info(&spi_dev->dev, "AFE Driver enabled\n");
return 0;
+
+
+err_proc_entry:
+ {
+ int res = misc_deregister(&ad986x_miscdev);
+ if (res)
+ dev_err(&spi_dev->dev, "failed to unregister misc driver %d\n",
+ res);
+ }
+
+err_misc_register:
+ ad986x_miscdev.parent = NULL;
+
+err_miscdev_parent:
+ spi_dev = NULL;
+
+err_spi:
+ /* Nothing. */
+
+ return ret;
}
/**