From: Wolfram Sang <w.sang@pengutronix.de>
To: linuxppc-dev@ozlabs.org
Cc: Wolfgang Denk <wd@denx.de>
Subject: mpc512x/clock: fix clk_get logic
Date: Fri, 30 Oct 2009 10:17:14 +0100 [thread overview]
Message-ID: <1256894234-11264-1-git-send-email-w.sang@pengutronix.de> (raw)
The matching logic returns a clock even if only the dev-part matches. This is
wrong as devices may utilize more than one clock, so the wrong clock may be
returned due to dev being not unique (noticed while working on the CAN driver).
The proposed new method will:
- require the id field (as _this_ is the unique identifier)
- dev need not be given; if NULL, it will match any device.
if given, it has to match the dev of the clock
- using the above rules, both fields need to match in order to claim the clock
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Grant Likely <grant.likely@secretlab.ca>
---
arch/powerpc/platforms/512x/clock.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
Index: .kernel/arch/powerpc/platforms/512x/clock.c
===================================================================
--- .kernel.orig/arch/powerpc/platforms/512x/clock.c
+++ .kernel/arch/powerpc/platforms/512x/clock.c
@@ -53,19 +53,21 @@ static DEFINE_MUTEX(clocks_mutex);
static struct clk *mpc5121_clk_get(struct device *dev, const char *id)
{
struct clk *p, *clk = ERR_PTR(-ENOENT);
- int dev_match = 0;
- int id_match = 0;
+ bool id_match = false;
+ /* Match any device if no dev given */
+ bool dev_match = !dev;
- if (dev == NULL || id == NULL)
+ /* We need the unique identifier */
+ if (id == NULL)
return NULL;
mutex_lock(&clocks_mutex);
list_for_each_entry(p, &clocks, node) {
if (dev == p->dev)
- dev_match++;
+ dev_match = true;
if (strcmp(id, p->name) == 0)
- id_match++;
- if ((dev_match || id_match) && try_module_get(p->owner)) {
+ id_match = true;
+ if (dev_match && id_match && try_module_get(p->owner)) {
clk = p;
break;
}
next reply other threads:[~2009-10-30 9:17 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-30 9:17 Wolfram Sang [this message]
2009-10-30 10:54 ` mpc512x/clock: fix clk_get logic Mark Brown
2009-10-30 11:36 ` Wolfram Sang
2009-10-30 12:02 ` Mark Brown
2009-10-30 17:53 ` [PATCH V2] " Wolfram Sang
2009-11-02 15:17 ` [PATCH] mpc512x/clocks: initialize CAN clocks Wolfram Sang
2009-11-02 18:02 ` Grant Likely
2009-11-02 18:40 ` Wolfram Sang
2009-11-02 21:13 ` Grant Likely
2009-11-02 17:48 ` [PATCH V2] mpc512x/clock: fix clk_get logic Grant Likely
2009-11-02 23:10 ` Stephen Rothwell
2009-11-02 23:49 ` Grant Likely
2009-10-30 21:54 ` Benjamin Herrenschmidt
2009-10-31 13:01 ` Wolfram Sang
2009-10-31 20:48 ` Benjamin Herrenschmidt
2009-11-02 14:22 ` Wolfram Sang
2009-11-02 16:37 ` Grant Likely
2009-11-02 17:18 ` Wolfram Sang
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=1256894234-11264-1-git-send-email-w.sang@pengutronix.de \
--to=w.sang@pengutronix.de \
--cc=linuxppc-dev@ozlabs.org \
--cc=wd@denx.de \
/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).