Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] staging: vchiq_arm: Fix drv_mgmt leak
@ 2024-10-13  8:45 Umang Jain
  2024-10-13  8:45 ` [PATCH 1/2] staging: vchiq_arm: Drop blank lines Umang Jain
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Umang Jain @ 2024-10-13  8:45 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Broadcom internal kernel review list
  Cc: linux-rpi-kernel, linux-arm-kernel, linux-staging, linux-kernel,
	Kieran Bingham, Dan Carpenter, Laurent Pinchart, kernel-list,
	Stefan Wahren, Umang Jain

1/2 is a drive by fix.
2/2 uses devres resouce management helper devm_kzalloc() to auto-free
struct vchiq_drv_mgmt on error and .remove() paths.

It might be good to aware the devres issue and following talk might
give reviewers a helpful context:

- https://lpc.events/event/16/contributions/1227/
- https://archive.fosdem.org/2023/schedule/event/devm_kzalloc/

I am not totally sure if these problems, causes a blockers for these
patches. There are a couple of memory management issues I've spotted
which can be fixed? by devres (similar to this series) but probably I
will wait for initial feedback on this series.

Umang Jain (2):
  staging: vchiq_arm: Drop blank lines
  staging: vchiq_arm: Use devm_kzalloc for mgmt

 .../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c  | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

-- 
2.45.2



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

* [PATCH 1/2] staging: vchiq_arm: Drop blank lines
  2024-10-13  8:45 [PATCH 0/2] staging: vchiq_arm: Fix drv_mgmt leak Umang Jain
@ 2024-10-13  8:45 ` Umang Jain
  2024-10-13  9:08   ` Stefan Wahren
  2024-10-13  8:45 ` [PATCH 2/2] staging: vchiq_arm: Use devm_kzalloc for mgmt Umang Jain
  2024-10-13  8:47 ` [PATCH 0/2] staging: vchiq_arm: Fix drv_mgmt leak Umang Jain
  2 siblings, 1 reply; 8+ messages in thread
From: Umang Jain @ 2024-10-13  8:45 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Broadcom internal kernel review list
  Cc: linux-rpi-kernel, linux-arm-kernel, linux-staging, linux-kernel,
	Kieran Bingham, Dan Carpenter, Laurent Pinchart, kernel-list,
	Stefan Wahren, Umang Jain

Drop unnecessary blank lines from vchiq_arm.c.

Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
---
 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
index 27ceaac8f6cc..e780ed714a14 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -309,9 +309,6 @@ static struct vchiq_arm_state *vchiq_platform_get_arm_state(struct vchiq_state *
 	return (struct vchiq_arm_state *)state->platform_state;
 }
 
-
-
-
 void vchiq_dump_platform_state(struct seq_file *f)
 {
 	seq_puts(f, "  Platform: 2835 (VC master)\n");
-- 
2.45.2



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

* [PATCH 2/2] staging: vchiq_arm: Use devm_kzalloc for mgmt
  2024-10-13  8:45 [PATCH 0/2] staging: vchiq_arm: Fix drv_mgmt leak Umang Jain
  2024-10-13  8:45 ` [PATCH 1/2] staging: vchiq_arm: Drop blank lines Umang Jain
@ 2024-10-13  8:45 ` Umang Jain
  2024-10-13  9:13   ` Stefan Wahren
  2024-10-13  8:47 ` [PATCH 0/2] staging: vchiq_arm: Fix drv_mgmt leak Umang Jain
  2 siblings, 1 reply; 8+ messages in thread
From: Umang Jain @ 2024-10-13  8:45 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Broadcom internal kernel review list
  Cc: linux-rpi-kernel, linux-arm-kernel, linux-staging, linux-kernel,
	Kieran Bingham, Dan Carpenter, Laurent Pinchart, kernel-list,
	Stefan Wahren, Umang Jain

Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
---
 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
index e780ed714a14..334fb7037766 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -1345,7 +1345,7 @@ static int vchiq_probe(struct platform_device *pdev)
 		return -ENOENT;
 	}
 
-	mgmt = kzalloc(sizeof(*mgmt), GFP_KERNEL);
+	mgmt = devm_kzalloc(&pdev->dev, sizeof(*mgmt), GFP_KERNEL);
 	if (!mgmt)
 		return -ENOMEM;
 
@@ -1403,8 +1403,6 @@ static void vchiq_remove(struct platform_device *pdev)
 
 	arm_state = vchiq_platform_get_arm_state(&mgmt->state);
 	kthread_stop(arm_state->ka_thread);
-
-	kfree(mgmt);
 }
 
 static struct platform_driver vchiq_driver = {
-- 
2.45.2



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

* Re: [PATCH 0/2] staging: vchiq_arm: Fix drv_mgmt leak
  2024-10-13  8:45 [PATCH 0/2] staging: vchiq_arm: Fix drv_mgmt leak Umang Jain
  2024-10-13  8:45 ` [PATCH 1/2] staging: vchiq_arm: Drop blank lines Umang Jain
  2024-10-13  8:45 ` [PATCH 2/2] staging: vchiq_arm: Use devm_kzalloc for mgmt Umang Jain
@ 2024-10-13  8:47 ` Umang Jain
  2 siblings, 0 replies; 8+ messages in thread
From: Umang Jain @ 2024-10-13  8:47 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Broadcom internal kernel review list
  Cc: linux-rpi-kernel, linux-arm-kernel, linux-staging, linux-kernel,
	Kieran Bingham, Dan Carpenter, Laurent Pinchart, kernel-list,
	Stefan Wahren

Hi,

[Treat this series as RFC]

On 13/10/24 2:15 pm, Umang Jain wrote:
> 1/2 is a drive by fix.
> 2/2 uses devres resouce management helper devm_kzalloc() to auto-free
> struct vchiq_drv_mgmt on error and .remove() paths.
>
> It might be good to aware the devres issue and following talk might
> give reviewers a helpful context:
>
> - https://lpc.events/event/16/contributions/1227/
> - https://archive.fosdem.org/2023/schedule/event/devm_kzalloc/
>
> I am not totally sure if these problems, causes a blockers for these
> patches. There are a couple of memory management issues I've spotted
> which can be fixed? by devres (similar to this series) but probably I
> will wait for initial feedback on this series.

Was supposed to mark this as RFC for discussion and yes, I have realised 
I've not written a commit message for 2/2.
>
> Umang Jain (2):
>    staging: vchiq_arm: Drop blank lines
>    staging: vchiq_arm: Use devm_kzalloc for mgmt
>
>   .../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c  | 7 +------
>   1 file changed, 1 insertion(+), 6 deletions(-)
>



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

* Re: [PATCH 1/2] staging: vchiq_arm: Drop blank lines
  2024-10-13  8:45 ` [PATCH 1/2] staging: vchiq_arm: Drop blank lines Umang Jain
@ 2024-10-13  9:08   ` Stefan Wahren
  0 siblings, 0 replies; 8+ messages in thread
From: Stefan Wahren @ 2024-10-13  9:08 UTC (permalink / raw)
  To: Umang Jain, Greg Kroah-Hartman,
	Broadcom internal kernel review list
  Cc: linux-rpi-kernel, linux-arm-kernel, linux-staging, linux-kernel,
	Kieran Bingham, Dan Carpenter, Laurent Pinchart, kernel-list

Hi Umang,

Am 13.10.24 um 10:45 schrieb Umang Jain:
> Drop unnecessary blank lines from vchiq_arm.c.
>
> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
Danilo was a little bit faster [1], so I think you shouldn't care about
this.

Regards

[1] -
https://lore.kernel.org/linux-staging/20241012233931.30720-1-dpereira@lkcamp.dev/T/#u
> ---
>   drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 3 ---
>   1 file changed, 3 deletions(-)
>
> diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> index 27ceaac8f6cc..e780ed714a14 100644
> --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> @@ -309,9 +309,6 @@ static struct vchiq_arm_state *vchiq_platform_get_arm_state(struct vchiq_state *
>   	return (struct vchiq_arm_state *)state->platform_state;
>   }
>
> -
> -
> -
>   void vchiq_dump_platform_state(struct seq_file *f)
>   {
>   	seq_puts(f, "  Platform: 2835 (VC master)\n");



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

* Re: [PATCH 2/2] staging: vchiq_arm: Use devm_kzalloc for mgmt
  2024-10-13  8:45 ` [PATCH 2/2] staging: vchiq_arm: Use devm_kzalloc for mgmt Umang Jain
@ 2024-10-13  9:13   ` Stefan Wahren
  2024-10-13 10:36     ` Umang Jain
  0 siblings, 1 reply; 8+ messages in thread
From: Stefan Wahren @ 2024-10-13  9:13 UTC (permalink / raw)
  To: Umang Jain, Greg Kroah-Hartman,
	Broadcom internal kernel review list
  Cc: linux-rpi-kernel, linux-arm-kernel, linux-staging, linux-kernel,
	Kieran Bingham, Dan Carpenter, Laurent Pinchart, kernel-list

Hi Umang,

Am 13.10.24 um 10:45 schrieb Umang Jain:
> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
except of the missing commit message, this patch looks good to me. I
understand the concerns about devm_kzalloc, but I think this doesn't
apply in this case.

Since this should be treated as RFC, is it already tested?

Regards
> ---
>   drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 4 +---
>   1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> index e780ed714a14..334fb7037766 100644
> --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> @@ -1345,7 +1345,7 @@ static int vchiq_probe(struct platform_device *pdev)
>   		return -ENOENT;
>   	}
>
> -	mgmt = kzalloc(sizeof(*mgmt), GFP_KERNEL);
> +	mgmt = devm_kzalloc(&pdev->dev, sizeof(*mgmt), GFP_KERNEL);
>   	if (!mgmt)
>   		return -ENOMEM;
>
> @@ -1403,8 +1403,6 @@ static void vchiq_remove(struct platform_device *pdev)
>
>   	arm_state = vchiq_platform_get_arm_state(&mgmt->state);
>   	kthread_stop(arm_state->ka_thread);
> -
> -	kfree(mgmt);
>   }
>
>   static struct platform_driver vchiq_driver = {



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

* Re: [PATCH 2/2] staging: vchiq_arm: Use devm_kzalloc for mgmt
  2024-10-13  9:13   ` Stefan Wahren
@ 2024-10-13 10:36     ` Umang Jain
  2024-10-13 10:46       ` Stefan Wahren
  0 siblings, 1 reply; 8+ messages in thread
From: Umang Jain @ 2024-10-13 10:36 UTC (permalink / raw)
  To: Stefan Wahren, Greg Kroah-Hartman,
	Broadcom internal kernel review list
  Cc: linux-rpi-kernel, linux-arm-kernel, linux-staging, linux-kernel,
	Kieran Bingham, Dan Carpenter, Laurent Pinchart, kernel-list



On 13/10/24 2:43 pm, Stefan Wahren wrote:
> Hi Umang,
>
> Am 13.10.24 um 10:45 schrieb Umang Jain:
>> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
> except of the missing commit message, this patch looks good to me. I
> understand the concerns about devm_kzalloc, but I think this doesn't
> apply in this case.

That's what I was wondering as well, since I tried module unloading and 
with the cdev also goes away? So shouldn't be conern, right ?

>
> Since this should be treated as RFC, is it already tested?

yes, it was tested
>
> Regards
>> ---
>>   drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 4 +---
>>   1 file changed, 1 insertion(+), 3 deletions(-)
>>
>> diff --git 
>> a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c 
>> b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
>> index e780ed714a14..334fb7037766 100644
>> --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
>> +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
>> @@ -1345,7 +1345,7 @@ static int vchiq_probe(struct platform_device 
>> *pdev)
>>           return -ENOENT;
>>       }
>>
>> -    mgmt = kzalloc(sizeof(*mgmt), GFP_KERNEL);
>> +    mgmt = devm_kzalloc(&pdev->dev, sizeof(*mgmt), GFP_KERNEL);
>>       if (!mgmt)
>>           return -ENOMEM;
>>
>> @@ -1403,8 +1403,6 @@ static void vchiq_remove(struct platform_device 
>> *pdev)
>>
>>       arm_state = vchiq_platform_get_arm_state(&mgmt->state);
>>       kthread_stop(arm_state->ka_thread);
>> -
>> -    kfree(mgmt);
>>   }
>>
>>   static struct platform_driver vchiq_driver = {
>



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

* Re: [PATCH 2/2] staging: vchiq_arm: Use devm_kzalloc for mgmt
  2024-10-13 10:36     ` Umang Jain
@ 2024-10-13 10:46       ` Stefan Wahren
  0 siblings, 0 replies; 8+ messages in thread
From: Stefan Wahren @ 2024-10-13 10:46 UTC (permalink / raw)
  To: Umang Jain, Greg Kroah-Hartman,
	Broadcom internal kernel review list
  Cc: linux-rpi-kernel, linux-arm-kernel, linux-staging, linux-kernel,
	Kieran Bingham, Dan Carpenter, Laurent Pinchart, kernel-list

Am 13.10.24 um 12:36 schrieb Umang Jain:
>
>
> On 13/10/24 2:43 pm, Stefan Wahren wrote:
>> Hi Umang,
>>
>> Am 13.10.24 um 10:45 schrieb Umang Jain:
>>> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
>> except of the missing commit message, this patch looks good to me. I
>> understand the concerns about devm_kzalloc, but I think this doesn't
>> apply in this case.
>
> That's what I was wondering as well, since I tried module unloading
> and with the cdev also goes away? So shouldn't be conern, right ?
AFAIU the problem would be if you bind the resources to the cdev, but
this isn't the case here. Btw I missed to mention that this is
considered as a fix and deserves a Fixes tag.
>
>>
>> Since this should be treated as RFC, is it already tested?
>
> yes, it was tested
>>
>> Regards
>>> ---
>>> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 4 +---
>>>   1 file changed, 1 insertion(+), 3 deletions(-)
>>>
>>> diff --git
>>> a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
>>> b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
>>> index e780ed714a14..334fb7037766 100644
>>> --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
>>> +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
>>> @@ -1345,7 +1345,7 @@ static int vchiq_probe(struct platform_device
>>> *pdev)
>>>           return -ENOENT;
>>>       }
>>>
>>> -    mgmt = kzalloc(sizeof(*mgmt), GFP_KERNEL);
>>> +    mgmt = devm_kzalloc(&pdev->dev, sizeof(*mgmt), GFP_KERNEL);
>>>       if (!mgmt)
>>>           return -ENOMEM;
>>>
>>> @@ -1403,8 +1403,6 @@ static void vchiq_remove(struct
>>> platform_device *pdev)
>>>
>>>       arm_state = vchiq_platform_get_arm_state(&mgmt->state);
>>>       kthread_stop(arm_state->ka_thread);
>>> -
>>> -    kfree(mgmt);
>>>   }
>>>
>>>   static struct platform_driver vchiq_driver = {
>>
>



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

end of thread, other threads:[~2024-10-13 10:48 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-13  8:45 [PATCH 0/2] staging: vchiq_arm: Fix drv_mgmt leak Umang Jain
2024-10-13  8:45 ` [PATCH 1/2] staging: vchiq_arm: Drop blank lines Umang Jain
2024-10-13  9:08   ` Stefan Wahren
2024-10-13  8:45 ` [PATCH 2/2] staging: vchiq_arm: Use devm_kzalloc for mgmt Umang Jain
2024-10-13  9:13   ` Stefan Wahren
2024-10-13 10:36     ` Umang Jain
2024-10-13 10:46       ` Stefan Wahren
2024-10-13  8:47 ` [PATCH 0/2] staging: vchiq_arm: Fix drv_mgmt leak Umang Jain

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