All of lore.kernel.org
 help / color / mirror / Atom feed
From: arvindY <arvind.yadav.cs@gmail.com>
To: "Michael Büsch" <m@bues.ch>
Cc: linux-kernel@vger.kernel.org, linux-wireless@vger.kernel.org
Subject: Re: [PATCH] ssb:: use put_device() if device_register fail
Date: Wed, 7 Mar 2018 23:52:10 +0530	[thread overview]
Message-ID: <5AA02DD2.2090709@gmail.com> (raw)
In-Reply-To: <20180307183858.63172de9@wiggum>



On Wednesday 07 March 2018 11:08 PM, Michael Büsch wrote:
> On Wed, 7 Mar 2018 22:46:14 +0530
> arvindY <arvind.yadav.cs@gmail.com> wrote:
>>>> diff --git a/drivers/ssb/main.c b/drivers/ssb/main.c
>>>> index 65420a9..c4449e0 100644
>>>> --- a/drivers/ssb/main.c
>>>> +++ b/drivers/ssb/main.c
>>>> @@ -521,6 +521,7 @@ static int ssb_devices_register(struct ssb_bus *bus)
>>>>    			ssb_err("Could not register %s\n", dev_name(dev));
>>>>    			/* Set dev to NULL to not unregister
>>>>    			 * dev on error unwinding. */
>>>> +			put_device(dev);
>>>>    			sdev->dev = NULL;
>>>>    			kfree(devwrap);
>>>>    			goto error;
>>> I don't think this is correct.
>>> The dev structure is allocated as part of devwrap, which is freed here.
>>>
>>> Why do you think we need put_device here?
>>>   
>> Yes this patch is not correct, We must not use kfree() after you called
>> device_register() (even
>> if it was not successful!) -- see the comment for device_register().
>> I will delete kfree() and send updated patch.
>
> Is device_put() going to call ssb_release_dev() to free the structure?
>
> Can you please elaborate on why device_put() must be used? The comment
> is not really of any use here.
>
put_device() will call kobject_put(). By calling this, The kobject core 
will automatically
clean up all of the memory allocated with the kobject. Internally 
kobject_put() will call
kobject_cleanup() which is responsible to call 'dev -> release' and also 
free other
kobject resources. we should always avoid kfree() if device_register() 
returned an error.
Otherwise it'll not do clean up of other kobject resources.

~arvind

      reply	other threads:[~2018-03-07 18:22 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-07 10:01 [PATCH] ssb:: use put_device() if device_register fail Arvind Yadav
2018-03-07 16:47 ` Michael Büsch
2018-03-07 17:16   ` arvindY
2018-03-07 17:38     ` Michael Büsch
2018-03-07 18:22       ` arvindY [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5AA02DD2.2090709@gmail.com \
    --to=arvind.yadav.cs@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=m@bues.ch \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.