All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rajendra Nayak <rnayak@codeaurora.org>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Stephen Boyd <sboyd@codeaurora.org>,
	Michael Turquette <mturquette@baylibre.com>,
	linux-clk <linux-clk@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] clk: Free struct clk allocated during clk_hw_register()
Date: Tue, 08 Nov 2016 15:34:33 +0530	[thread overview]
Message-ID: <5821A331.5060405@codeaurora.org> (raw)
In-Reply-To: <CAMuHMdW6-oRJ4CKbUeXOixvKFOZ3vf8pGhCH87rOx1KuE8bdGQ@mail.gmail.com>



On 11/08/2016 03:06 PM, Geert Uytterhoeven wrote:
> Hi Rajendra,
> 
> On Tue, Nov 8, 2016 at 9:23 AM, Rajendra Nayak <rnayak@codeaurora.org> wrote:
>> With clk_hw_register() API we hide the struct clk from the caller
>> and return an int error code instead, so the caller (clk provider)
>> is not expected to use hw->clk on return.
> 
> That's correct, in case of failure.

sorry, maybe the commit text needs to be reworded. I meant 'clk_hw_register() returns
an int (not a struct clk pointer), 0 on success or an error code in case of a failure.

> 
>> Free the memory, and mark hw->clk as NULL before returning.
>>
>> Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
>> ---
>>  drivers/clk/clk.c | 10 +++++++++-
>>  1 file changed, 9 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
>> index 0fb39fe..f81e4aa 100644
>> --- a/drivers/clk/clk.c
>> +++ b/drivers/clk/clk.c
>> @@ -2628,7 +2628,15 @@ struct clk *clk_register(struct device *dev, struct clk_hw *hw)
>>   */
>>  int clk_hw_register(struct device *dev, struct clk_hw *hw)
>>  {
>> -       return PTR_ERR_OR_ZERO(clk_register(dev, hw));
>> +       struct clk *c;
>> +
>> +       c = clk_register(dev, hw);
>> +       if (IS_ERR(c))
>> +               return PTR_ERR(c);
>> +
>> +       __clk_free_clk(c);
>> +       hw->clk = NULL;
> 
> This is the success path, not the failure path (on failure, clk_register()
> has already freed the struct clk).
> Why do you free the struct clk in case of success?
> 
> What am I missing?

so with 'per-user' clks, I thought we now have one struct clk per user, allocated
when the user does a clk_get() and freed with a clk_put(), so we shouldn't ideally
need one during clk registration?
The one allocated in clk_register() is for legacy users who need to get a struct clk *
back. For users of clk_hw_register() this should not be needed, no? 
 
> 
>> +       return 0;
>>  }
>>  EXPORT_SYMBOL_GPL(clk_hw_register);
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds
> 

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation

  reply	other threads:[~2016-11-08 10:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-08  8:23 [PATCH] clk: Free struct clk allocated during clk_hw_register() Rajendra Nayak
2016-11-08  9:36 ` Geert Uytterhoeven
2016-11-08 10:04   ` Rajendra Nayak [this message]
2016-11-08 10:37     ` Rajendra Nayak

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=5821A331.5060405@codeaurora.org \
    --to=rnayak@codeaurora.org \
    --cc=geert@linux-m68k.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=sboyd@codeaurora.org \
    /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.