[PATCH] spi/pl022: remove function cannot exit
Grant Likely
grant.likely at secretlab.ca
Tue Aug 2 09:54:22 EDT 2011
On Tue, Aug 02, 2011 at 11:29:24AM +0200, Linus Walleij wrote:
> From: Linus Walleij <linus.walleij at 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 at arm.linux.org.uk>
> Signed-off-by: Linus Walleij <linus.walleij at 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
>
More information about the linux-arm-kernel
mailing list