2018-03-01 05:27:28

by Arvind Yadav

[permalink] [raw]
Subject: [PATCH v2] net: iucv: Free memory obtained by kzalloc

Free memory, if afiucv_iucv_init is not successful. So calling
put_device() before kfree(). This will decrement the last reference.

Signed-off-by: Arvind Yadav <[email protected]>
---
changes in v2:
Calling put_device() before kfree().

net/iucv/af_iucv.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
index 1e8cc7b..a07943f 100644
--- a/net/iucv/af_iucv.c
+++ b/net/iucv/af_iucv.c
@@ -2433,9 +2433,12 @@ static int afiucv_iucv_init(void)
af_iucv_dev->driver = &af_iucv_driver;
err = device_register(af_iucv_dev);
if (err)
- goto out_driver;
+ goto out_iucv_dev;
return 0;

+out_iucv_dev:
+ put_device(af_iucv_dev);
+ kfree(af_iucv_dev);
out_driver:
driver_unregister(&af_iucv_driver);
out_iucv:
--
1.9.1



2018-03-01 09:46:31

by Ursula Braun

[permalink] [raw]
Subject: Re: [PATCH v2] net: iucv: Free memory obtained by kzalloc



On 03/01/2018 06:25 AM, Arvind Yadav wrote:
> Free memory, if afiucv_iucv_init is not successful. So calling
> put_device() before kfree(). This will decrement the last reference.
>
> Signed-off-by: Arvind Yadav <[email protected]>
> ---
> changes in v2:
> Calling put_device() before kfree().
>
> net/iucv/af_iucv.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
> index 1e8cc7b..a07943f 100644
> --- a/net/iucv/af_iucv.c
> +++ b/net/iucv/af_iucv.c
> @@ -2433,9 +2433,12 @@ static int afiucv_iucv_init(void)
> af_iucv_dev->driver = &af_iucv_driver;
> err = device_register(af_iucv_dev);
> if (err)
> - goto out_driver;
> + goto out_iucv_dev;
> return 0;
>
> +out_iucv_dev:
> + put_device(af_iucv_dev);
> + kfree(af_iucv_dev);
> out_driver:
> driver_unregister(&af_iucv_driver);
> out_iucv:
>

Just put_device() should be sufficient here; please get rid of the kfree() call.