Re: [PATCH v2 2/3] firmware/edd: use kobject_put() on edd_device_register() failure

Sourabh Jain <[email protected]>
Newsgroups gmane.linux.ports.ppc.embedded,gmane.linux.ports.arm.kernel,gmane.linux.kernel
Message-ID <[email protected]>

On 13/08/26 15:24, Tarun Sahu wrote:
> When edd_device_register() fails after initializing the kobject with
> kobject_init_and_add(), calling kfree(edev) directly bypasses the
> kobject release callback (edd_release) and leaks the allocated kobject
> resources.
>
> Fix this by replacing direct kfree(edev) with kobject_put(&edev->kobj) on
> registration failure.
>
> Signed-off-by: Tarun Sahu <[email protected]>
> ---
>   drivers/firmware/edd.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/firmware/edd.c b/drivers/firmware/edd.c
> index f980c5b56858..763e7b16d517 100644
> --- a/drivers/firmware/edd.c
> +++ b/drivers/firmware/edd.c
> @@ -748,7 +748,7 @@ edd_init(void)
>   
>   		rc = edd_device_register(edev, i);
>   		if (rc) {
> -			kfree(edev);
> +			kobject_put(&edev->kobj);

The EDD device is registered with a ktype that has a release function, 
so it is
better to call kobject_put() to release edev instead of freeing the 
memory manually.

Changes look good to me. Feel free to add:
Reviewed-by: Sourabh Jain <[email protected]>


>   			goto out;
>   		}
>   		edd_devices[i] = edev;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.