From b4c5038375914d5546bed0a1cdf1afdbe93f0c53 Mon Sep 17 00:00:00 2001 From: Yacine Belkadi Date: Wed, 11 Apr 2012 17:14:10 +0200 Subject: cleo/linux/drv/afe/ad986x: refactor probe() with goto(s), refs #3082 Refactor to prepare for subsequent commits. --- .../linux-2.6.25.10-spc300/drivers/afe/ad986x.c | 51 +++++++++++++++------- 1 file 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; } /** -- cgit v1.2.3