From: Chen Gang <gang.chen@asianux.com>
To: Paul Walmsley <paul@pwsan.com>
Cc: Tony Lindgren <tony@atomide.com>,
Russell King - ARM Linux <linux@arm.linux.org.uk>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
linux-omap@vger.kernel.org
Subject: Re: [PATCH] ARM:OMAP2: an issue about curr_pwrst, u8 is never < 0
Date: Mon, 01 Apr 2013 18:41:11 +0800 [thread overview]
Message-ID: <51596447.9070000@asianux.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1304011024090.28273@utopia.booyaka.com>
On 2013年04月01日 18:25, Paul Walmsley wrote:
> Hi,
>
> On Thu, 14 Mar 2013, Chen Gang wrote:
>
>>
>> if pwrdm_read_pwrst returns negative number, curr_pwrst can not notice it.
>> since really need check curr_pwrst whether is negative,
>> need let the check valid in _pwrdm_save_clkdm_state_and_activate.
>> and also better to check the return value of pwrdm_read_pwrst, firstly.
>>
>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>
> thanks for reporting this and sending a suggested fix. The following
> patch is what I've queued here, which should deal with the root cause
> without the casts.
>
>
yours (patch below) is simpler and clearer than mine.
thanks.
:-)
> - Paul
>
> From: Paul Walmsley <paul@pwsan.com>
> Date: Sun, 31 Mar 2013 20:22:22 -0600
> Subject: [PATCH] ARM: OMAP2+: powerdomain: avoid testing whether an unsigned
> char is less than 0
>
> _pwrdm_save_clkdm_state_and_activate() tried to test one of its
> unsigned arguments to determine whether it was less than zero. Fix by
> moving the error test to the caller.
>
> Reported-by: Chen Gang <gang.chen@asianux.com>
> Signed-off-by: Paul Walmsley <paul@pwsan.com>
> ---
> arch/arm/mach-omap2/powerdomain.c | 18 ++++++++----------
> 1 file changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c
> index 8e61d80..89cad4a 100644
> --- a/arch/arm/mach-omap2/powerdomain.c
> +++ b/arch/arm/mach-omap2/powerdomain.c
> @@ -52,7 +52,6 @@ enum {
> #define ALREADYACTIVE_SWITCH 0
> #define FORCEWAKEUP_SWITCH 1
> #define LOWPOWERSTATE_SWITCH 2
> -#define ERROR_SWITCH 3
>
> /* pwrdm_list contains all registered struct powerdomains */
> static LIST_HEAD(pwrdm_list);
> @@ -233,10 +232,7 @@ static u8 _pwrdm_save_clkdm_state_and_activate(struct powerdomain *pwrdm,
> {
> u8 sleep_switch;
>
> - if (curr_pwrst < 0) {
> - WARN_ON(1);
> - sleep_switch = ERROR_SWITCH;
> - } else if (curr_pwrst < PWRDM_POWER_ON) {
> + if (curr_pwrst < PWRDM_POWER_ON) {
> if (curr_pwrst > pwrst &&
> pwrdm->flags & PWRDM_HAS_LOWPOWERSTATECHANGE &&
> arch_pwrdm->pwrdm_set_lowpwrstchange) {
> @@ -1091,7 +1087,8 @@ int pwrdm_post_transition(struct powerdomain *pwrdm)
> */
> int omap_set_pwrdm_state(struct powerdomain *pwrdm, u8 pwrst)
> {
> - u8 curr_pwrst, next_pwrst, sleep_switch;
> + u8 next_pwrst, sleep_switch;
> + int curr_pwrst;
> int ret = 0;
> bool hwsup = false;
>
> @@ -1107,16 +1104,17 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u8 pwrst)
> pwrdm_lock(pwrdm);
>
> curr_pwrst = pwrdm_read_pwrst(pwrdm);
> + if (curr_pwrst < 0) {
> + ret = -EINVAL;
> + goto osps_out;
> + }
> +
> next_pwrst = pwrdm_read_next_pwrst(pwrdm);
> if (curr_pwrst == pwrst && next_pwrst == pwrst)
> goto osps_out;
>
> sleep_switch = _pwrdm_save_clkdm_state_and_activate(pwrdm, curr_pwrst,
> pwrst, &hwsup);
> - if (sleep_switch == ERROR_SWITCH) {
> - ret = -EINVAL;
> - goto osps_out;
> - }
>
> ret = pwrdm_set_next_pwrst(pwrdm, pwrst);
> if (ret)
>
--
Chen Gang
Asianux Corporation
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: gang.chen@asianux.com (Chen Gang)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM:OMAP2: an issue about curr_pwrst, u8 is never < 0
Date: Mon, 01 Apr 2013 18:41:11 +0800 [thread overview]
Message-ID: <51596447.9070000@asianux.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1304011024090.28273@utopia.booyaka.com>
On 2013?04?01? 18:25, Paul Walmsley wrote:
> Hi,
>
> On Thu, 14 Mar 2013, Chen Gang wrote:
>
>>
>> if pwrdm_read_pwrst returns negative number, curr_pwrst can not notice it.
>> since really need check curr_pwrst whether is negative,
>> need let the check valid in _pwrdm_save_clkdm_state_and_activate.
>> and also better to check the return value of pwrdm_read_pwrst, firstly.
>>
>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>
> thanks for reporting this and sending a suggested fix. The following
> patch is what I've queued here, which should deal with the root cause
> without the casts.
>
>
yours (patch below) is simpler and clearer than mine.
thanks.
:-)
> - Paul
>
> From: Paul Walmsley <paul@pwsan.com>
> Date: Sun, 31 Mar 2013 20:22:22 -0600
> Subject: [PATCH] ARM: OMAP2+: powerdomain: avoid testing whether an unsigned
> char is less than 0
>
> _pwrdm_save_clkdm_state_and_activate() tried to test one of its
> unsigned arguments to determine whether it was less than zero. Fix by
> moving the error test to the caller.
>
> Reported-by: Chen Gang <gang.chen@asianux.com>
> Signed-off-by: Paul Walmsley <paul@pwsan.com>
> ---
> arch/arm/mach-omap2/powerdomain.c | 18 ++++++++----------
> 1 file changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c
> index 8e61d80..89cad4a 100644
> --- a/arch/arm/mach-omap2/powerdomain.c
> +++ b/arch/arm/mach-omap2/powerdomain.c
> @@ -52,7 +52,6 @@ enum {
> #define ALREADYACTIVE_SWITCH 0
> #define FORCEWAKEUP_SWITCH 1
> #define LOWPOWERSTATE_SWITCH 2
> -#define ERROR_SWITCH 3
>
> /* pwrdm_list contains all registered struct powerdomains */
> static LIST_HEAD(pwrdm_list);
> @@ -233,10 +232,7 @@ static u8 _pwrdm_save_clkdm_state_and_activate(struct powerdomain *pwrdm,
> {
> u8 sleep_switch;
>
> - if (curr_pwrst < 0) {
> - WARN_ON(1);
> - sleep_switch = ERROR_SWITCH;
> - } else if (curr_pwrst < PWRDM_POWER_ON) {
> + if (curr_pwrst < PWRDM_POWER_ON) {
> if (curr_pwrst > pwrst &&
> pwrdm->flags & PWRDM_HAS_LOWPOWERSTATECHANGE &&
> arch_pwrdm->pwrdm_set_lowpwrstchange) {
> @@ -1091,7 +1087,8 @@ int pwrdm_post_transition(struct powerdomain *pwrdm)
> */
> int omap_set_pwrdm_state(struct powerdomain *pwrdm, u8 pwrst)
> {
> - u8 curr_pwrst, next_pwrst, sleep_switch;
> + u8 next_pwrst, sleep_switch;
> + int curr_pwrst;
> int ret = 0;
> bool hwsup = false;
>
> @@ -1107,16 +1104,17 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u8 pwrst)
> pwrdm_lock(pwrdm);
>
> curr_pwrst = pwrdm_read_pwrst(pwrdm);
> + if (curr_pwrst < 0) {
> + ret = -EINVAL;
> + goto osps_out;
> + }
> +
> next_pwrst = pwrdm_read_next_pwrst(pwrdm);
> if (curr_pwrst == pwrst && next_pwrst == pwrst)
> goto osps_out;
>
> sleep_switch = _pwrdm_save_clkdm_state_and_activate(pwrdm, curr_pwrst,
> pwrst, &hwsup);
> - if (sleep_switch == ERROR_SWITCH) {
> - ret = -EINVAL;
> - goto osps_out;
> - }
>
> ret = pwrdm_set_next_pwrst(pwrdm, pwrst);
> if (ret)
>
--
Chen Gang
Asianux Corporation
next prev parent reply other threads:[~2013-04-01 10:42 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-14 4:21 [PATCH] ARM:OMAP2: an issue about curr_pwrst, u8 is never < 0 Chen Gang
2013-03-14 4:21 ` Chen Gang
2013-04-01 10:25 ` Paul Walmsley
2013-04-01 10:25 ` Paul Walmsley
2013-04-01 10:41 ` Chen Gang [this message]
2013-04-01 10:41 ` Chen Gang
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=51596447.9070000@asianux.com \
--to=gang.chen@asianux.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=paul@pwsan.com \
--cc=tony@atomide.com \
/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.