public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] media: imx-jpeg: convert kzalloc() to devm_kzalloc()
@ 2026-03-07 21:04 Sanjay Chitroda
  2026-03-09 15:54 ` Frank Li
  0 siblings, 1 reply; 3+ messages in thread
From: Sanjay Chitroda @ 2026-03-07 21:04 UTC (permalink / raw)
  To: mirela.rabulea, mchehab, Frank.Li, s.hauer
  Cc: kernel, festevam, linux-media, linux-arm-kernel, linux-kernel,
	skhan

From: Sanjay Chitroda <sanjayembeddedse@gmail.com>

The driver allcoates memory using kzalloc() and frees it in the relase
path. since the allocated memory is tied to the lifetime of the device,
devm_kzalloc() can be used instead.

Using device-managed allocation simplifies the error handling paths and
remove the need for manual cleanup.

No functional change intended.

Signed-off-by: Sanjay Chitroda <sanjayembeddedse@gmail.com>
---
 drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
index b558700d1d96..bd4b5f08a85c 100644
--- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
+++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
@@ -2200,14 +2200,12 @@ static int mxc_jpeg_open(struct file *file)
 	struct mxc_jpeg_ctx *ctx;
 	int ret = 0;
 
-	ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
+	ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
 	if (!ctx)
 		return -ENOMEM;
 
-	if (mutex_lock_interruptible(&mxc_jpeg->lock)) {
-		ret = -ERESTARTSYS;
-		goto free;
-	}
+	if (mutex_lock_interruptible(&mxc_jpeg->lock))
+		return -ERESTARTSYS;
 
 	v4l2_fh_init(&ctx->fh, mxc_vfd);
 	v4l2_fh_add(&ctx->fh, file);
@@ -2246,8 +2244,6 @@ static int mxc_jpeg_open(struct file *file)
 	v4l2_fh_del(&ctx->fh, file);
 	v4l2_fh_exit(&ctx->fh);
 	mutex_unlock(&mxc_jpeg->lock);
-free:
-	kfree(ctx);
 	return ret;
 }
 
@@ -2754,7 +2750,6 @@ static int mxc_jpeg_release(struct file *file)
 	v4l2_m2m_ctx_release(ctx->fh.m2m_ctx);
 	v4l2_fh_del(&ctx->fh, file);
 	v4l2_fh_exit(&ctx->fh);
-	kfree(ctx);
 	mutex_unlock(&mxc_jpeg->lock);
 
 	return 0;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] media: imx-jpeg: convert kzalloc() to devm_kzalloc()
  2026-03-07 21:04 [PATCH] media: imx-jpeg: convert kzalloc() to devm_kzalloc() Sanjay Chitroda
@ 2026-03-09 15:54 ` Frank Li
  2026-03-10  2:59   ` Sanjay Chitroda
  0 siblings, 1 reply; 3+ messages in thread
From: Frank Li @ 2026-03-09 15:54 UTC (permalink / raw)
  To: Sanjay Chitroda
  Cc: mirela.rabulea, mchehab, s.hauer, kernel, festevam, linux-media,
	linux-arm-kernel, linux-kernel, skhan

On Sun, Mar 08, 2026 at 02:34:04AM +0530, Sanjay Chitroda wrote:
> From: Sanjay Chitroda <sanjayembeddedse@gmail.com>
>
> The driver allcoates memory using kzalloc() and frees it in the relase
> path. since the allocated memory is tied to the lifetime of the device,
> devm_kzalloc() can be used instead.

static const struct v4l2_file_operations mxc_jpeg_fops = {
        .owner          = THIS_MODULE,
        .open           = mxc_jpeg_open,
        .release        = mxc_jpeg_release,
        .poll           = v4l2_m2m_fop_poll,
        .unlocked_ioctl = video_ioctl2,
        .mmap           = v4l2_m2m_fop_mmap,
};

Look like it is not true. .open() should be called only when device open,
not at probe()?

Frank

>
> Using device-managed allocation simplifies the error handling paths and
> remove the need for manual cleanup.
>
> No functional change intended.
>
> Signed-off-by: Sanjay Chitroda <sanjayembeddedse@gmail.com>
> ---
>  drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c | 11 +++--------
>  1 file changed, 3 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
> index b558700d1d96..bd4b5f08a85c 100644
> --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
> +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
> @@ -2200,14 +2200,12 @@ static int mxc_jpeg_open(struct file *file)
>  	struct mxc_jpeg_ctx *ctx;
>  	int ret = 0;
>
> -	ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
> +	ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
>  	if (!ctx)
>  		return -ENOMEM;
>
> -	if (mutex_lock_interruptible(&mxc_jpeg->lock)) {
> -		ret = -ERESTARTSYS;
> -		goto free;
> -	}
> +	if (mutex_lock_interruptible(&mxc_jpeg->lock))
> +		return -ERESTARTSYS;
>
>  	v4l2_fh_init(&ctx->fh, mxc_vfd);
>  	v4l2_fh_add(&ctx->fh, file);
> @@ -2246,8 +2244,6 @@ static int mxc_jpeg_open(struct file *file)
>  	v4l2_fh_del(&ctx->fh, file);
>  	v4l2_fh_exit(&ctx->fh);
>  	mutex_unlock(&mxc_jpeg->lock);
> -free:
> -	kfree(ctx);
>  	return ret;
>  }
>
> @@ -2754,7 +2750,6 @@ static int mxc_jpeg_release(struct file *file)
>  	v4l2_m2m_ctx_release(ctx->fh.m2m_ctx);
>  	v4l2_fh_del(&ctx->fh, file);
>  	v4l2_fh_exit(&ctx->fh);
> -	kfree(ctx);
>  	mutex_unlock(&mxc_jpeg->lock);
>
>  	return 0;
> --
> 2.34.1
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] media: imx-jpeg: convert kzalloc() to devm_kzalloc()
  2026-03-09 15:54 ` Frank Li
@ 2026-03-10  2:59   ` Sanjay Chitroda
  0 siblings, 0 replies; 3+ messages in thread
From: Sanjay Chitroda @ 2026-03-10  2:59 UTC (permalink / raw)
  To: Frank Li
  Cc: mirela.rabulea, mchehab, s.hauer, kernel, festevam, linux-media,
	linux-arm-kernel, linux-kernel, skhan



On 9 March 2026 9:24:20 pm IST, Frank Li <Frank.li@nxp.com> wrote:
>On Sun, Mar 08, 2026 at 02:34:04AM +0530, Sanjay Chitroda wrote:
>> From: Sanjay Chitroda <sanjayembeddedse@gmail.com>
>>
>> The driver allcoates memory using kzalloc() and frees it in the relase
>> path. since the allocated memory is tied to the lifetime of the device,
>> devm_kzalloc() can be used instead.
>
>static const struct v4l2_file_operations mxc_jpeg_fops = {
>        .owner          = THIS_MODULE,
>        .open           = mxc_jpeg_open,
>        .release        = mxc_jpeg_release,
>        .poll           = v4l2_m2m_fop_poll,
>        .unlocked_ioctl = video_ioctl2,
>        .mmap           = v4l2_m2m_fop_mmap,
>};
>
>Look like it is not true. .open() should be called only when device open,
>not at probe()?

You are correct.

Since the context structure is allocated in .open() and released in
.release(), its lifetime is tied to the file handle rather than the
device.

Using devm_kzalloc() would defer freeing the memory until device
removal, which could cause memory accumulation across multiple
open()/close() cycles.

I'll drop this change.

>
>Frank
>
>>
>> Using device-managed allocation simplifies the error handling paths and
>> remove the need for manual cleanup.
>>
>> No functional change intended.
>>
>> Signed-off-by: Sanjay Chitroda <sanjayembeddedse@gmail.com>
>> ---
>>  drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c | 11 +++--------
>>  1 file changed, 3 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
>> index b558700d1d96..bd4b5f08a85c 100644
>> --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
>> +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
>> @@ -2200,14 +2200,12 @@ static int mxc_jpeg_open(struct file *file)
>>  	struct mxc_jpeg_ctx *ctx;
>>  	int ret = 0;
>>
>> -	ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
>> +	ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
>>  	if (!ctx)
>>  		return -ENOMEM;
>>
>> -	if (mutex_lock_interruptible(&mxc_jpeg->lock)) {
>> -		ret = -ERESTARTSYS;
>> -		goto free;
>> -	}
>> +	if (mutex_lock_interruptible(&mxc_jpeg->lock))
>> +		return -ERESTARTSYS;
>>
>>  	v4l2_fh_init(&ctx->fh, mxc_vfd);
>>  	v4l2_fh_add(&ctx->fh, file);
>> @@ -2246,8 +2244,6 @@ static int mxc_jpeg_open(struct file *file)
>>  	v4l2_fh_del(&ctx->fh, file);
>>  	v4l2_fh_exit(&ctx->fh);
>>  	mutex_unlock(&mxc_jpeg->lock);
>> -free:
>> -	kfree(ctx);
>>  	return ret;
>>  }
>>
>> @@ -2754,7 +2750,6 @@ static int mxc_jpeg_release(struct file *file)
>>  	v4l2_m2m_ctx_release(ctx->fh.m2m_ctx);
>>  	v4l2_fh_del(&ctx->fh, file);
>>  	v4l2_fh_exit(&ctx->fh);
>> -	kfree(ctx);
>>  	mutex_unlock(&mxc_jpeg->lock);
>>
>>  	return 0;
>> --
>> 2.34.1
>>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-03-10  2:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-07 21:04 [PATCH] media: imx-jpeg: convert kzalloc() to devm_kzalloc() Sanjay Chitroda
2026-03-09 15:54 ` Frank Li
2026-03-10  2:59   ` Sanjay Chitroda

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox