Re: [PATCH] iio: fix memory leak in iio_device_register_eventset()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 15 Nov 2022 10:37:12 +0800
Zeng Heng <zengheng4@xxxxxxxxxx> wrote:

> When iio_device_register_sysfs_group() returns failed,
> iio_device_register_eventset() needs to free attrs array.
> 
> Otherwise, kmemleak would scan & report memory leak as below:
> 
> unreferenced object 0xffff88810a1cc3c0 (size 32):
>   comm "100-i2c-vcnl302", pid 728, jiffies 4295052307 (age 156.027s)
>   backtrace:
>     __kmalloc+0x46/0x1b0
>     iio_device_register_eventset at drivers/iio/industrialio-event.c:541
>     __iio_device_register at drivers/iio/industrialio-core.c:1959
>     __devm_iio_device_register at drivers/iio/industrialio-core.c:2040
> 
> Fixes: 32f171724e5c ("iio: core: rework iio device group creation")
> Signed-off-by: Zeng Heng <zengheng4@xxxxxxxxxx>

Good find.

Applied to the fixes-togreg branch of iio.git.

Thanks,

Jonathan

> ---
>  drivers/iio/industrialio-event.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/industrialio-event.c b/drivers/iio/industrialio-event.c
> index 3d78da2531a9..727e2ef66aa4 100644
> --- a/drivers/iio/industrialio-event.c
> +++ b/drivers/iio/industrialio-event.c
> @@ -556,7 +556,7 @@ int iio_device_register_eventset(struct iio_dev *indio_dev)
>  
>  	ret = iio_device_register_sysfs_group(indio_dev, &ev_int->group);
>  	if (ret)
> -		goto error_free_setup_event_lines;
> +		goto error_free_group_attrs;
>  
>  	ev_int->ioctl_handler.ioctl = iio_event_ioctl;
>  	iio_device_ioctl_handler_register(&iio_dev_opaque->indio_dev,
> @@ -564,6 +564,8 @@ int iio_device_register_eventset(struct iio_dev *indio_dev)
>  
>  	return 0;
>  
> +error_free_group_attrs:
> +	kfree(ev_int->group.attrs);
>  error_free_setup_event_lines:
>  	iio_free_chan_devattr_list(&ev_int->dev_attr_list);
>  	kfree(ev_int);




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux