From: Viresh Kumar <viresh.kumar@linaro.org>
To: sre@kernel.org, dbaryshkov@gmail.com, dwmw2@infradead.org,
anton@enomsg.org
Cc: linux-pm@vger.kernel.org, linaro-kernel@lists.linaro.org,
Viresh Kumar <viresh.kumar@linaro.org>
Subject: [PATCH 09/15] power-supply: Don't return -EINVAL from __power_supply_find_supply_from_node()
Date: Thu, 4 Sep 2014 17:31:30 +0530 [thread overview]
Message-ID: <a683e3d78c79fd00c88dbd7cb63819ee55d43dfc.1409831636.git.viresh.kumar@linaro.org> (raw)
In-Reply-To: <2eacd908a8094887cc1796f75ae0513be8a3e36d.1409831636.git.viresh.kumar@linaro.org>
In-Reply-To: <cover.1409831636.git.viresh.kumar@linaro.org>
We need to stop 'class_for_each_device' loop when a supply matches with the
of-node. In order to achieve this we currently return -EINVAL from
__power_supply_populate_supplied_from() on successful match.
class_for_each_device() is free to return similar errors in other cases as well
and so the choice of return value here isn't particularly great.
This commit isn't removing the Hack but making it more elegant by returning '1'
instead.
Also power_supply_find_supply_from_node() can return errors other than
-EPROBE_DEFER now if class_for_each_device() fails.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/power/power_supply_core.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c
index ab1cf8b..55140eb 100644
--- a/drivers/power/power_supply_core.c
+++ b/drivers/power/power_supply_core.c
@@ -161,9 +161,9 @@ static int __power_supply_find_supply_from_node(struct device *dev,
struct device_node *np = data;
struct power_supply *epsy = dev_get_drvdata(dev);
- /* return error breaks out of class_for_each_device loop */
+ /* returning non-zero breaks out of class_for_each_device loop */
if (epsy->of_node == np)
- return -EINVAL;
+ return 1;
return 0;
}
@@ -186,15 +186,19 @@ static int power_supply_find_supply_from_node(struct device_node *supply_node)
return -EPROBE_DEFER;
/*
- * We have to treat the return value as inverted, because if
- * we return error on not found, then it won't continue looking.
- * So we trick it by returning error on success to stop looking
- * once the matching device is found.
+ * class_for_each_device() either returns its own errors or values
+ * returned by __power_supply_find_supply_from_node().
+ *
+ * __power_supply_find_supply_from_node() will return 0 (no match)
+ * or 1 (match).
+ *
+ * We return 0 if class_for_each_device() returned 1, -EPROBE_DEFER if
+ * it returned 0, or error as returned by it.
*/
error = class_for_each_device(power_supply_class, NULL, supply_node,
__power_supply_find_supply_from_node);
- return error ? 0 : -EPROBE_DEFER;
+ return error ? (error == 1 ? 0 : error) : -EPROBE_DEFER;
}
static int power_supply_check_supplies(struct power_supply *psy)
--
2.0.3.693.g996b0fd
next prev parent reply other threads:[~2014-09-04 12:02 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-04 12:00 [PATCH 00/15] power_supply: Fixes & cleanups Viresh Kumar
2014-09-04 12:01 ` [PATCH 01/15] power-supply: Don't over-allocate memory for "supplied-from" array Viresh Kumar
2014-09-04 12:01 ` [PATCH 02/15] power-supply: Return early if "power-supplies" property isn't valid Viresh Kumar
2014-09-04 12:01 ` [PATCH 03/15] Documentation: Charger Manager: Fix spelling mistakes Viresh Kumar
2014-09-04 12:01 ` [PATCH 04/15] power-supply: Forward declare structs together Viresh Kumar
2014-09-04 12:01 ` [PATCH 05/15] power-supply: Drop unnecessary typecasts Viresh Kumar
2014-09-04 12:01 ` [PATCH 06/15] power-supply: Use 'break' instead of 'continue' to end loop Viresh Kumar
2014-09-04 12:01 ` [PATCH 07/15] power-supply: Rearrange code to remove duplicate lines Viresh Kumar
2014-09-04 12:01 ` [PATCH 08/15] power-supply: Propagate error returned by power_supply_find_supply_from_node() Viresh Kumar
2014-09-04 12:01 ` Viresh Kumar [this message]
2014-09-04 12:01 ` [PATCH 10/15] power-supply: Drop useless 'if (ret.intval)' statements Viresh Kumar
2014-09-04 12:01 ` [PATCH 11/15] power-supply: Mark 'if' blocks in power_supply_changed_work() with 'likely' Viresh Kumar
2014-09-04 12:01 ` [PATCH 12/15] power-supply: Use PTR_ERR_OR_ZERO() routine Viresh Kumar
2014-09-04 12:01 ` [PATCH 13/15] power-supply: Check for failures only when we can fail Viresh Kumar
2014-09-04 12:01 ` [PATCH 14/15] power-supply: Avoid unnecessary 'goto' statements Viresh Kumar
2014-09-04 12:01 ` [PATCH 15/15] power_supply: Don't iterate over devices to return -EPROBE_DEFER Viresh Kumar
2014-10-01 3:19 ` [PATCH 00/15] power_supply: Fixes & cleanups Viresh Kumar
2014-10-01 15:08 ` Sebastian Reichel
2014-10-02 5:26 ` Viresh Kumar
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=a683e3d78c79fd00c88dbd7cb63819ee55d43dfc.1409831636.git.viresh.kumar@linaro.org \
--to=viresh.kumar@linaro.org \
--cc=anton@enomsg.org \
--cc=dbaryshkov@gmail.com \
--cc=dwmw2@infradead.org \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-pm@vger.kernel.org \
--cc=sre@kernel.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).