diff mbox

spi/pl022: remove function cannot exit

Message ID 1312277364-12945-1-git-send-email-linus.walleij@stericsson.com (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Linus Walleij Aug. 2, 2011, 9:29 a.m. UTC
From: Linus Walleij <linus.walleij@linaro.org>

The remove function in the PL022 driver cannot abort the remove
function any way, so restructure the code so as not to make that
assumption. Remove will now proceed no matter whether it can
stop the transfer queue or not.

Reported-by: Russell King <linux@arm.linux.org.uk>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/spi/spi-pl022.c |   11 +++--------
 1 files changed, 3 insertions(+), 8 deletions(-)

Comments

Grant Likely Aug. 2, 2011, 1:54 p.m. UTC | #1
On Tue, Aug 02, 2011 at 11:29:24AM +0200, Linus Walleij wrote:
> From: Linus Walleij <linus.walleij@linaro.org>
> 
> The remove function in the PL022 driver cannot abort the remove
> function any way, so restructure the code so as not to make that
> assumption. Remove will now proceed no matter whether it can
> stop the transfer queue or not.
> 
> Reported-by: Russell King <linux@arm.linux.org.uk>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

Applied, thanks.

g.

> ---
>  drivers/spi/spi-pl022.c |   11 +++--------
>  1 files changed, 3 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c
> index eba88c7..730b4a3 100644
> --- a/drivers/spi/spi-pl022.c
> +++ b/drivers/spi/spi-pl022.c
> @@ -2267,17 +2267,13 @@ static int __devexit
>  pl022_remove(struct amba_device *adev)
>  {
>  	struct pl022 *pl022 = amba_get_drvdata(adev);
> -	int status = 0;
> +
>  	if (!pl022)
>  		return 0;
>  
>  	/* Remove the queue */
> -	status = destroy_queue(pl022);
> -	if (status != 0) {
> -		dev_err(&adev->dev,
> -			"queue remove failed (%d)\n", status);
> -		return status;
> -	}
> +	if (destroy_queue(pl022) != 0)
> +		dev_err(&adev->dev, "queue remove failed\n");
>  	load_ssp_default_config(pl022);
>  	pl022_dma_remove(pl022);
>  	free_irq(adev->irq[0], pl022);
> @@ -2289,7 +2285,6 @@ pl022_remove(struct amba_device *adev)
>  	spi_unregister_master(pl022->master);
>  	spi_master_put(pl022->master);
>  	amba_set_drvdata(adev, NULL);
> -	dev_dbg(&adev->dev, "remove succeeded\n");
>  	return 0;
>  }
>  
> -- 
> 1.7.6
> 

------------------------------------------------------------------------------
BlackBerry&reg; DevCon Americas, Oct. 18-20, San Francisco, CA
The must-attend event for mobile developers. Connect with experts. 
Get tools for creating Super Apps. See the latest technologies.
Sessions, hands-on labs, demos & much more. Register early & save!
http://p.sf.net/sfu/rim-blackberry-1
diff mbox

Patch

diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c
index eba88c7..730b4a3 100644
--- a/drivers/spi/spi-pl022.c
+++ b/drivers/spi/spi-pl022.c
@@ -2267,17 +2267,13 @@  static int __devexit
 pl022_remove(struct amba_device *adev)
 {
 	struct pl022 *pl022 = amba_get_drvdata(adev);
-	int status = 0;
+
 	if (!pl022)
 		return 0;
 
 	/* Remove the queue */
-	status = destroy_queue(pl022);
-	if (status != 0) {
-		dev_err(&adev->dev,
-			"queue remove failed (%d)\n", status);
-		return status;
-	}
+	if (destroy_queue(pl022) != 0)
+		dev_err(&adev->dev, "queue remove failed\n");
 	load_ssp_default_config(pl022);
 	pl022_dma_remove(pl022);
 	free_irq(adev->irq[0], pl022);
@@ -2289,7 +2285,6 @@  pl022_remove(struct amba_device *adev)
 	spi_unregister_master(pl022->master);
 	spi_master_put(pl022->master);
 	amba_set_drvdata(adev, NULL);
-	dev_dbg(&adev->dev, "remove succeeded\n");
 	return 0;
 }