diff mbox series

Input: Fix memory leak in psxpad_spi_probe

Message ID 20191121200115.24846-1-navid.emamdoost@gmail.com (mailing list archive)
State New, archived
Headers show
Series Input: Fix memory leak in psxpad_spi_probe | expand

Commit Message

Navid Emamdoost Nov. 21, 2019, 8:01 p.m. UTC
In the implementation of psxpad_spi_probe() the allocated memory for
pdev is leaked if psxpad_spi_init_ff() or input_register_polled_device()
fail. The solution is using device managed allocation, like the one used
for pad. Perform the allocation using
devm_input_allocate_polled_device().

Fixes: 8be193c7b1f4 ("Input: add support for PlayStation 1/2 joypads connected via SPI")
Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
---
 drivers/input/joystick/psxpad-spi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Dmitry Torokhov Nov. 22, 2019, 7:02 p.m. UTC | #1
Hi Navid,

On Thu, Nov 21, 2019 at 02:01:11PM -0600, Navid Emamdoost wrote:
> In the implementation of psxpad_spi_probe() the allocated memory for
> pdev is leaked if psxpad_spi_init_ff() or input_register_polled_device()
> fail. The solution is using device managed allocation, like the one used
> for pad. Perform the allocation using
> devm_input_allocate_polled_device().
> 
> Fixes: 8be193c7b1f4 ("Input: add support for PlayStation 1/2 joypads connected via SPI")
> Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>

This is fixed in the current version of the driver, but you can send it
to stable@gerkernel.orf with my

Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

> ---
>  drivers/input/joystick/psxpad-spi.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/input/joystick/psxpad-spi.c b/drivers/input/joystick/psxpad-spi.c
> index 7eee1b0e360f..99a6052500ca 100644
> --- a/drivers/input/joystick/psxpad-spi.c
> +++ b/drivers/input/joystick/psxpad-spi.c
> @@ -292,7 +292,7 @@ static int psxpad_spi_probe(struct spi_device *spi)
>  	if (!pad)
>  		return -ENOMEM;
>  
> -	pdev = input_allocate_polled_device();
> +	pdev = devm_input_allocate_polled_device(&spi->dev);
>  	if (!pdev) {
>  		dev_err(&spi->dev, "failed to allocate input device\n");
>  		return -ENOMEM;
> -- 
> 2.17.1
>
Greg KH Nov. 26, 2019, 9:34 a.m. UTC | #2
On Fri, Nov 22, 2019 at 11:02:08AM -0800, Dmitry Torokhov wrote:
> Hi Navid,
> 
> On Thu, Nov 21, 2019 at 02:01:11PM -0600, Navid Emamdoost wrote:
> > In the implementation of psxpad_spi_probe() the allocated memory for
> > pdev is leaked if psxpad_spi_init_ff() or input_register_polled_device()
> > fail. The solution is using device managed allocation, like the one used
> > for pad. Perform the allocation using
> > devm_input_allocate_polled_device().
> > 
> > Fixes: 8be193c7b1f4 ("Input: add support for PlayStation 1/2 joypads connected via SPI")
> > Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
> 
> This is fixed in the current version of the driver, but you can send it
> to stable@gerkernel.orf with my

Was it fixed by any specific patch, or just a side-affect of some other
larger change?

thanks,

greg k-h
Dmitry Torokhov Dec. 7, 2019, 8:44 p.m. UTC | #3
On Tue, Nov 26, 2019 at 10:34:34AM +0100, Greg Kroah-Hartman wrote:
> On Fri, Nov 22, 2019 at 11:02:08AM -0800, Dmitry Torokhov wrote:
> > Hi Navid,
> > 
> > On Thu, Nov 21, 2019 at 02:01:11PM -0600, Navid Emamdoost wrote:
> > > In the implementation of psxpad_spi_probe() the allocated memory for
> > > pdev is leaked if psxpad_spi_init_ff() or input_register_polled_device()
> > > fail. The solution is using device managed allocation, like the one used
> > > for pad. Perform the allocation using
> > > devm_input_allocate_polled_device().
> > > 
> > > Fixes: 8be193c7b1f4 ("Input: add support for PlayStation 1/2 joypads connected via SPI")
> > > Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
> > 
> > This is fixed in the current version of the driver, but you can send it
> > to stable@gerkernel.orf with my
> 
> Was it fixed by any specific patch, or just a side-affect of some other
> larger change?

It was fixed "by accident" when I converted the driver from using
input_polled_dev to  standard input device in polled mode.

Thanks.
diff mbox series

Patch

diff --git a/drivers/input/joystick/psxpad-spi.c b/drivers/input/joystick/psxpad-spi.c
index 7eee1b0e360f..99a6052500ca 100644
--- a/drivers/input/joystick/psxpad-spi.c
+++ b/drivers/input/joystick/psxpad-spi.c
@@ -292,7 +292,7 @@  static int psxpad_spi_probe(struct spi_device *spi)
 	if (!pad)
 		return -ENOMEM;
 
-	pdev = input_allocate_polled_device();
+	pdev = devm_input_allocate_polled_device(&spi->dev);
 	if (!pdev) {
 		dev_err(&spi->dev, "failed to allocate input device\n");
 		return -ENOMEM;