From: Tony Lindgren <tony@atomide.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: linux-clk@vger.kernel.org, linux-omap@vger.kernel.org,
Stephen Boyd <sboyd@codeaurora.org>
Subject: Re: clk: ti: Add support for dm814x ADPLL
Date: Wed, 2 Mar 2016 09:05:03 -0800 [thread overview]
Message-ID: <20160302170502.GS21163@atomide.com> (raw)
In-Reply-To: <20160302111130.GA10965@mwanda>
Hi
* Dan Carpenter <dan.carpenter@oracle.com> [160302 03:12]:
> Hello Tony Lindgren,
>
> The patch e6ab1637c643: "clk: ti: Add support for dm814x ADPLL" from
> Feb 26, 2016, leads to the following static checker warnings:
>
> drivers/clk/ti/adpll.c:465 ti_adpll_recalc_rate()
> warn: should '__readw(d->regs + 20) << 18' be a 64 bit type?
>
> drivers/clk/ti/adpll.c:945 ti_adpll_probe()
> error: we previously assumed 'd->clocks' could be null (see line 921)
Stephen already patched most of this with "clk: ti: Fix some errors
found by static checkers", some mysteries remain below though.
> This should probably be:
> rate = (u64)readw_relaxed(d->regs + ADPLL_MN2DIV_OFFSET) << 18;
Already fixed by Stephen.
> 773 static void ti_adpll_free_resources(struct ti_adpll_data *d)
> 774 {
> 775 int i;
> 776
> 777 for (i = TI_ADPLL_M3; i >= 0; i--) {
> 778 struct ti_adpll_clock *ac = &d->clocks[i];
> 779
> 780 if (!ac || IS_ERR_OR_NULL(ac->clk))
>
> ac can't possibly be NULL here.
Yeah looks like we can remove ac check here.
> 910 err = ti_adpll_init_registers(d);
> 911 if (err)
> 912 return err;
> 913
> 914 err = ti_adpll_init_inputs(d);
> 915 if (err)
> 916 return err;
> ^^^^^^^^^^
> This is the last direct return in the function, meaning that
> ti_adpll_init_inputs() must allocate something but I can't see what.
> It should match clkdev_drop() and ac->unregister()? I don't understand.
Hmm I don't get this one. How did you get a warning here, is this a
warning from sparse also?
> 917
> 918 d->clocks = devm_kzalloc(d->dev, sizeof(struct ti_adpll_clock) *
> 919 TI_ADPLL_NR_CLOCKS,
> 920 GFP_KERNEL);
> 921 if (!d->clocks)
> 922 goto free;
>
> We don't set the error code here.
Fixed by Stephen.
> 924 err = ti_adpll_init_dco(d);
> 925 if (err) {
> 926 dev_err(dev, "could not register dco: %i\n", err);
> 927 goto free;
> 928 }
> 929
> 930 err = ti_adpll_init_children_adpll_s(d);
> 931 if (err)
> 932 goto free;
> 933 err = ti_adpll_init_children_adpll_lj(d);
> 934 if (err)
> 935 goto free;
> 936
> 937 err = of_clk_add_provider(d->np, of_clk_src_onecell_get, &d->outputs);
> 938 if (err)
> 939 goto free;
> 940
> 941 return 0;
> 942
> 943 free:
> 944 WARN_ON(1);
> 945 ti_adpll_free_resources(d);
>
> This is a classic one err bug, where we have a single exit point but
> it's too complicated and subtle to handle all errors so we mess up. The
> label doesn't indicate what we are freeing.
Well there's really not much to free with devm.. We could rename
the label to unregister to avoid confusion?
> Ideally, the allocate and the free functions mirror each other but I
> don't see a ti_adpll_(alloc|register|whatever)_resources(). Possibly
> this is a mirror of ti_adpll_init_dco() so it could be called
> ti_adpll_free_dco()? I'm not sure.
Or it could be just be renamed to ti_adpll_unregister() as
we're not freeing any memory there.
Regards,
Tony
next parent reply other threads:[~2016-03-02 17:05 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20160302111130.GA10965@mwanda>
2016-03-02 17:05 ` Tony Lindgren [this message]
2016-03-02 18:09 ` clk: ti: Add support for dm814x ADPLL Dan Carpenter
2016-03-02 18:19 ` Tony Lindgren
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=20160302170502.GS21163@atomide.com \
--to=tony@atomide.com \
--cc=dan.carpenter@oracle.com \
--cc=linux-clk@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).