[PATCH] serial: 8250_of: replace kzalloc with devm_kzalloc

Osama Abdelkader posted 1 patch 1 month ago
drivers/tty/serial/8250/8250_of.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
[PATCH] serial: 8250_of: replace kzalloc with devm_kzalloc
Posted by Osama Abdelkader 1 month ago
Use devm_kzalloc for automatic memory cleanup.

Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com>
---
 drivers/tty/serial/8250/8250_of.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/tty/serial/8250/8250_of.c b/drivers/tty/serial/8250/8250_of.c
index d178b6c54ea1..4fe3b79d0e4f 100644
--- a/drivers/tty/serial/8250/8250_of.c
+++ b/drivers/tty/serial/8250/8250_of.c
@@ -217,14 +217,14 @@ static int of_platform_serial_probe(struct platform_device *ofdev)
 	if (of_property_read_bool(ofdev->dev.of_node, "used-by-rtas"))
 		return -EBUSY;
 
-	info = kzalloc(sizeof(*info), GFP_KERNEL);
+	info = devm_kzalloc(&ofdev->dev, sizeof(*info), GFP_KERNEL);
 	if (info == NULL)
 		return -ENOMEM;
 
 	memset(&port8250, 0, sizeof(port8250));
 	ret = of_platform_serial_setup(ofdev, port_type, &port8250, info);
 	if (ret)
-		goto err_free;
+		return ret;
 
 	if (port8250.port.fifosize)
 		port8250.capabilities = UART_CAP_FIFO;
@@ -266,8 +266,6 @@ static int of_platform_serial_probe(struct platform_device *ofdev)
 err_dispose:
 	pm_runtime_put_sync(&ofdev->dev);
 	pm_runtime_disable(&ofdev->dev);
-err_free:
-	kfree(info);
 	return ret;
 }
 
@@ -286,7 +284,6 @@ static void of_platform_serial_remove(struct platform_device *ofdev)
 	reset_control_assert(info->rst);
 	pm_runtime_put_sync(&ofdev->dev);
 	pm_runtime_disable(&ofdev->dev);
-	kfree(info);
 }
 
 #ifdef CONFIG_PM_SLEEP
-- 
2.43.0
Re: [PATCH] serial: 8250_of: replace kzalloc with devm_kzalloc
Posted by Greg KH 1 month ago
On Thu, Aug 28, 2025 at 01:11:05AM +0200, Osama Abdelkader wrote:
> Use devm_kzalloc for automatic memory cleanup.

Why?

I do not see a good reason here as to how this makes anything better
overall?  How was it tested?

thanks,

greg k-h
Re: [PATCH] serial: 8250_of: replace kzalloc with devm_kzalloc
Posted by Osama Abdelkader 1 month ago
On 8/28/25 7:51 AM, Greg KH wrote:
> On Thu, Aug 28, 2025 at 01:11:05AM +0200, Osama Abdelkader wrote:
>> Use devm_kzalloc for automatic memory cleanup.
> Why?
>
> I do not see a good reason here as to how this makes anything better
> overall?  How was it tested?
>
> thanks,
>
> greg k-h

Hi Greg,

Thanks for the feedback, the change to devm_kzalloc ensures the allocated
memory is tied to the device's lifetime. This removed the need for explicit
kfree() calls in the remove path and avoids potential leaks in probe error 
paths. It also aligns the driver with others in the 8250 subsystem which 
already use devm-managed resources.

For testing, I built the kernel and booted it on QEMU riscv with of_serial
enabled. The driver probed successfully and the serial console worked as
expected, also tested unbinding/rebinding the driver via sysfs to confirm
no leaks or errors occur.

Thanks,
Osama
Re: [PATCH] serial: 8250_of: replace kzalloc with devm_kzalloc
Posted by Greg KH 1 month ago
On Fri, Aug 29, 2025 at 11:49:41AM +0200, Osama Abdelkader wrote:
> 
> On 8/28/25 7:51 AM, Greg KH wrote:
> > On Thu, Aug 28, 2025 at 01:11:05AM +0200, Osama Abdelkader wrote:
> >> Use devm_kzalloc for automatic memory cleanup.
> > Why?
> >
> > I do not see a good reason here as to how this makes anything better
> > overall?  How was it tested?
> >
> > thanks,
> >
> > greg k-h
> 
> Hi Greg,
> 
> Thanks for the feedback, the change to devm_kzalloc ensures the allocated
> memory is tied to the device's lifetime. This removed the need for explicit
> kfree() calls in the remove path and avoids potential leaks in probe error 
> paths.

But there are no existing errors, so why change working code?

> It also aligns the driver with others in the 8250 subsystem which 
> already use devm-managed resources.

This code is older than the devm api :)

> For testing, I built the kernel and booted it on QEMU riscv with of_serial
> enabled. The driver probed successfully and the serial console worked as
> expected, also tested unbinding/rebinding the driver via sysfs to confirm
> no leaks or errors occur.

But did you test the error paths?  That is what you changed here.

And changes like this, for old, working, code, is usually not needed
unless you are fixing a bug somewhere.

thanks,

greg k-h
Re: [PATCH] serial: 8250_of: replace kzalloc with devm_kzalloc
Posted by Osama Abdelkader 1 month ago
On 8/29/25 2:44 PM, Greg KH wrote:
> On Fri, Aug 29, 2025 at 11:49:41AM +0200, Osama Abdelkader wrote:
>> On 8/28/25 7:51 AM, Greg KH wrote:
>>> On Thu, Aug 28, 2025 at 01:11:05AM +0200, Osama Abdelkader wrote:
>>>> Use devm_kzalloc for automatic memory cleanup.
>>> Why?
>>>
>>> I do not see a good reason here as to how this makes anything better
>>> overall?  How was it tested?
>>>
>>> thanks,
>>>
>>> greg k-h
>> Hi Greg,
>>
>> Thanks for the feedback, the change to devm_kzalloc ensures the allocated
>> memory is tied to the device's lifetime. This removed the need for explicit
>> kfree() calls in the remove path and avoids potential leaks in probe error 
>> paths.
> But there are no existing errors, so why change working code?
>
>> It also aligns the driver with others in the 8250 subsystem which 
>> already use devm-managed resources.
> This code is older than the devm api :)
>
>> For testing, I built the kernel and booted it on QEMU riscv with of_serial
>> enabled. The driver probed successfully and the serial console worked as
>> expected, also tested unbinding/rebinding the driver via sysfs to confirm
>> no leaks or errors occur.
> But did you test the error paths?  That is what you changed here.
>
> And changes like this, for old, working, code, is usually not needed
> unless you are fixing a bug somewhere.
>
> thanks,
>
> greg k-h

Thanks Greg, totally understandable. I was looking for a simple patch to be honest
though looked for modernizing some APIs but looks like I chose the wrong driver:D
If you guide me to a simple bug or a simple contribution here would be much appreciated.

Thanks,
Osama