diff options
author | Julia Lawall <Julia.Lawall@lip6.fr> | 2013-09-02 05:54:20 -0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-09-16 19:19:14 -0400 |
commit | 1e0d191f62c779cdd6953db2541b6b92969ce1bb (patch) | |
tree | 33ff14c5b0ecc8c40d20057b6196641d80ebc9ce /drivers/spi/spi-dw-mmio.c | |
parent | 272b98c6455f00884f0350f775c5342358ebb73f (diff) |
spi: designware: delete premature free_irq
Free_irq is not needed if there has been no request_irq. Free_irq is
removed from both the probe and remove functions. The correct request_irq
and free_irq appear to be in the add_host and remove_host functions in
spi-dw.c.
A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)
// <smpl>
@@
expression e;
@@
*e = platform_get_irq(...);
... when != request_irq(e,...)
*free_irq(e,...)
// </smpl>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'drivers/spi/spi-dw-mmio.c')
-rw-r--r-- | drivers/spi/spi-dw-mmio.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/spi/spi-dw-mmio.c b/drivers/spi/spi-dw-mmio.c index 4aa8be865cc0..168c620947f4 100644 --- a/drivers/spi/spi-dw-mmio.c +++ b/drivers/spi/spi-dw-mmio.c | |||
@@ -74,7 +74,7 @@ static int dw_spi_mmio_probe(struct platform_device *pdev) | |||
74 | dwsmmio->clk = clk_get(&pdev->dev, NULL); | 74 | dwsmmio->clk = clk_get(&pdev->dev, NULL); |
75 | if (IS_ERR(dwsmmio->clk)) { | 75 | if (IS_ERR(dwsmmio->clk)) { |
76 | ret = PTR_ERR(dwsmmio->clk); | 76 | ret = PTR_ERR(dwsmmio->clk); |
77 | goto err_irq; | 77 | goto err_unmap; |
78 | } | 78 | } |
79 | clk_enable(dwsmmio->clk); | 79 | clk_enable(dwsmmio->clk); |
80 | 80 | ||
@@ -94,8 +94,6 @@ err_clk: | |||
94 | clk_disable(dwsmmio->clk); | 94 | clk_disable(dwsmmio->clk); |
95 | clk_put(dwsmmio->clk); | 95 | clk_put(dwsmmio->clk); |
96 | dwsmmio->clk = NULL; | 96 | dwsmmio->clk = NULL; |
97 | err_irq: | ||
98 | free_irq(dws->irq, dws); | ||
99 | err_unmap: | 97 | err_unmap: |
100 | iounmap(dws->regs); | 98 | iounmap(dws->regs); |
101 | err_release_reg: | 99 | err_release_reg: |
@@ -115,7 +113,6 @@ static int dw_spi_mmio_remove(struct platform_device *pdev) | |||
115 | clk_put(dwsmmio->clk); | 113 | clk_put(dwsmmio->clk); |
116 | dwsmmio->clk = NULL; | 114 | dwsmmio->clk = NULL; |
117 | 115 | ||
118 | free_irq(dwsmmio->dws.irq, &dwsmmio->dws); | ||
119 | dw_spi_remove_host(&dwsmmio->dws); | 116 | dw_spi_remove_host(&dwsmmio->dws); |
120 | iounmap(dwsmmio->dws.regs); | 117 | iounmap(dwsmmio->dws.regs); |
121 | kfree(dwsmmio); | 118 | kfree(dwsmmio); |