[PATCH v1] spi: xtensa-xtfpga: Fix a double put() in xtfpga_spi_remove()

Christophe JAILLET posted 1 patch 2 years, 9 months ago
drivers/spi/spi-xtensa-xtfpga.c | 1 -
1 file changed, 1 deletion(-)
[PATCH v1] spi: xtensa-xtfpga: Fix a double put() in xtfpga_spi_remove()
Posted by Christophe JAILLET 2 years, 9 months ago
'master' is allocated with devm_spi_alloc_master(), there is no need to
put it explicitly in the remove function.

Fixes: 478cc2fc3dd7 ("spi: xtensa-xtfpga: Switch to use devm_spi_alloc_master()")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/spi/spi-xtensa-xtfpga.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/spi/spi-xtensa-xtfpga.c b/drivers/spi/spi-xtensa-xtfpga.c
index 2fa7608f94cd..271ae98f441c 100644
--- a/drivers/spi/spi-xtensa-xtfpga.c
+++ b/drivers/spi/spi-xtensa-xtfpga.c
@@ -123,7 +123,6 @@ static int xtfpga_spi_remove(struct platform_device *pdev)
 	struct xtfpga_spi *xspi = spi_master_get_devdata(master);
 
 	spi_bitbang_stop(&xspi->bitbang);
-	spi_master_put(master);
 
 	return 0;
 }
-- 
2.34.1
Re: [PATCH v1] spi: xtensa-xtfpga: Fix a double put() in xtfpga_spi_remove()
Posted by Max Filippov 2 years, 9 months ago
Hi Christophe,

On Sat, Dec 10, 2022 at 3:52 AM Christophe JAILLET
<christophe.jaillet@wanadoo.fr> wrote:
>
> 'master' is allocated with devm_spi_alloc_master(), there is no need to
> put it explicitly in the remove function.
>
> Fixes: 478cc2fc3dd7 ("spi: xtensa-xtfpga: Switch to use devm_spi_alloc_master()")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---
>  drivers/spi/spi-xtensa-xtfpga.c | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/drivers/spi/spi-xtensa-xtfpga.c b/drivers/spi/spi-xtensa-xtfpga.c
> index 2fa7608f94cd..271ae98f441c 100644
> --- a/drivers/spi/spi-xtensa-xtfpga.c
> +++ b/drivers/spi/spi-xtensa-xtfpga.c
> @@ -123,7 +123,6 @@ static int xtfpga_spi_remove(struct platform_device *pdev)
>         struct xtfpga_spi *xspi = spi_master_get_devdata(master);
>
>         spi_bitbang_stop(&xspi->bitbang);
> -       spi_master_put(master);

This put is matching the get in the spi_bitbang_start.
It was discussed here:
https://lore.kernel.org/linux-spi/CAMo8BfJaD7pG_iutY8jordysjChyzhTpVSqpxXh3QoZsj2QmaQ@mail.gmail.com/

-- 
Thanks.
-- Max
Re: [PATCH v1] spi: xtensa-xtfpga: Fix a double put() in xtfpga_spi_remove()
Posted by Mark Brown 2 years, 9 months ago
On Sat, Dec 10, 2022 at 06:48:02AM -0800, Max Filippov wrote:
> Hi Christophe,
> 
> On Sat, Dec 10, 2022 at 3:52 AM Christophe JAILLET
> <christophe.jaillet@wanadoo.fr> wrote:

> > 'master' is allocated with devm_spi_alloc_master(), there is no need to
> > put it explicitly in the remove function.

> >         spi_bitbang_stop(&xspi->bitbang);
> > -       spi_master_put(master);

> This put is matching the get in the spi_bitbang_start.
> It was discussed here:
> https://lore.kernel.org/linux-spi/CAMo8BfJaD7pG_iutY8jordysjChyzhTpVSqpxXh3QoZsj2QmaQ@mail.gmail.com/

Probably worth a comment though since it is a bit of a gotcha.  Ideally
we'd improve this in the bitbang code but that's harder.
Re: [PATCH v1] spi: xtensa-xtfpga: Fix a double put() in xtfpga_spi_remove()
Posted by Yang Yingliang 2 years, 9 months ago
On 2022/12/12 23:36, Mark Brown wrote:
> On Sat, Dec 10, 2022 at 06:48:02AM -0800, Max Filippov wrote:
>> Hi Christophe,
>>
>> On Sat, Dec 10, 2022 at 3:52 AM Christophe JAILLET
>> <christophe.jaillet@wanadoo.fr> wrote:
>>> 'master' is allocated with devm_spi_alloc_master(), there is no need to
>>> put it explicitly in the remove function.
>>>          spi_bitbang_stop(&xspi->bitbang);
>>> -       spi_master_put(master);
>> This put is matching the get in the spi_bitbang_start.
>> It was discussed here:
>> https://lore.kernel.org/linux-spi/CAMo8BfJaD7pG_iutY8jordysjChyzhTpVSqpxXh3QoZsj2QmaQ@mail.gmail.com/
> Probably worth a comment though since it is a bit of a gotcha.  Ideally
> we'd improve this in the bitbang code but that's harder.
Ideally, spi_bitbang_stop() should undo spi_bitbang_start(). shall we 
move spi_master_put() in spi_bitbang_stop() instead of
calling it separately in drivers?

Thanks,
Yang
Re: [PATCH v1] spi: xtensa-xtfpga: Fix a double put() in xtfpga_spi_remove()
Posted by Mark Brown 2 years, 9 months ago
On Tue, Dec 13, 2022 at 09:30:32AM +0800, Yang Yingliang wrote:
> On 2022/12/12 23:36, Mark Brown wrote:
> > On Sat, Dec 10, 2022 at 06:48:02AM -0800, Max Filippov wrote:

> > Probably worth a comment though since it is a bit of a gotcha.  Ideally
> > we'd improve this in the bitbang code but that's harder.

> Ideally, spi_bitbang_stop() should undo spi_bitbang_start(). shall we move
> spi_master_put() in spi_bitbang_stop() instead of
> calling it separately in drivers?

Ideally like I say, there's issues with devm IIRC which make it more
complicated than just adding a put() there.