2018-03-01 06:01:22

by Arvind Yadav

[permalink] [raw]
Subject: [PATCH] driver core: Free memory obtained by kzalloc

Here kfree() is taking NULL. So moving 'dev = NULL' after kfree().

Signed-off-by: Arvind Yadav <[email protected]>
---
drivers/base/bus.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index ef61833..ccb64a0 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -1170,9 +1170,9 @@ static int subsys_register(struct bus_type *subsys,

err_dev_reg:
put_device(dev);
- dev = NULL;
err_name:
kfree(dev);
+ dev = NULL;
err_dev:
bus_unregister(subsys);
return err;
--
1.9.1



2018-03-01 10:55:52

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH] driver core: Free memory obtained by kzalloc

On Thu, Mar 1, 2018 at 7:59 AM, Arvind Yadav <[email protected]> wrote:
> Here kfree() is taking NULL. So moving 'dev = NULL' after kfree().

Ouch! Does system_root_device_release() code ring a bell? How did you test this?

When you start eventually looking to the code?

NAK.

> diff --git a/drivers/base/bus.c b/drivers/base/bus.c
> index ef61833..ccb64a0 100644
> --- a/drivers/base/bus.c
> +++ b/drivers/base/bus.c
> @@ -1170,9 +1170,9 @@ static int subsys_register(struct bus_type *subsys,
>
> err_dev_reg:
> put_device(dev);
> - dev = NULL;
> err_name:
> kfree(dev);
> + dev = NULL;
> err_dev:
> bus_unregister(subsys);
> return err;



--
With Best Regards,
Andy Shevchenko

2018-03-01 11:26:36

by Arvind Yadav

[permalink] [raw]
Subject: Re: [PATCH] driver core: Free memory obtained by kzalloc

Hi Andy,

sorry for noise.

On Thursday 01 March 2018 04:24 PM, Andy Shevchenko wrote:
> On Thu, Mar 1, 2018 at 7:59 AM, Arvind Yadav <[email protected]> wrote:
>> Here kfree() is taking NULL. So moving 'dev = NULL' after kfree().
> Ouch! Does system_root_device_release() code ring a bell? How did you test this?
Yes, This is fine. put_device() will decrement a ref count.
So No need to call kfree() after put_device().
>
> When you start eventually looking to the code?
>
> NAK.
>
>> diff --git a/drivers/base/bus.c b/drivers/base/bus.c
>> index ef61833..ccb64a0 100644
>> --- a/drivers/base/bus.c
>> +++ b/drivers/base/bus.c
>> @@ -1170,9 +1170,9 @@ static int subsys_register(struct bus_type *subsys,
>>
>> err_dev_reg:
>> put_device(dev);
>> - dev = NULL;
>> err_name:
>> kfree(dev);
>> + dev = NULL;
>> err_dev:
>> bus_unregister(subsys);
>> return err;
Thanks for your review.
>
>