diff mbox

PM / Domains: Only check for errors when calling dev_pm_get_subsys_data

Message ID 201208052313.47024.rjw@sisk.pl (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Rafael Wysocki Aug. 5, 2012, 9:13 p.m. UTC
On Sunday, August 05, 2012, Heiko Stübner wrote:
> Commit 1d5fcfec22 (PM / Domains: Add device domain data reference counter)
> added a check for the return value of dev_pm_get_subsys_data.
> 
> But this function does not only return error codes but also "1" when a
> new object has been created.
> 
> So, change the check to only catch real errors.
> 
> Signed-off-by: Heiko Stuebner <heiko@sntech.de>

Good catch!

Applied to the linux-next branch of the linux-pm.git tree.  I'm going to
push it as a fix for v3.6.

However, there's one more analogous fix necessary, for which I'm going to
apply the appended patch.

Thanks,
Rafael


---
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PM / Domains: Fix one more dev_pm_get_subsys_data() return value check

The check agains the return value of dev_pm_get_subsys_data()
in pm_genpd_add_callbacks() should be modified so that non-negative
values are not regarded as errors, because dev_pm_get_subsys_data()
returns 1 if it successfully creates a new object.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 drivers/base/power/domain.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Heiko Stuebner Aug. 5, 2012, 9:50 p.m. UTC | #1
Am Sonntag, 5. August 2012, 23:13:46 schrieb Rafael J. Wysocki:
> On Sunday, August 05, 2012, Heiko Stübner wrote:
> > Commit 1d5fcfec22 (PM / Domains: Add device domain data reference
> > counter) added a check for the return value of dev_pm_get_subsys_data.
> > 
> > But this function does not only return error codes but also "1" when a
> > new object has been created.
> > 
> > So, change the check to only catch real errors.
> > 
> > Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> 
> Good catch!

it bit me while moving to 3.6-rc1 with my machine support - suddenly my usbphy 
didn't turn on again :-)

 
> Applied to the linux-next branch of the linux-pm.git tree.  I'm going to
> push it as a fix for v3.6.
> 
> However, there's one more analogous fix necessary, for which I'm going to
> apply the appended patch.

Sorry :-) - I did only check the rest of 1d5fcfec22 for more of this, but not 
the whole domain.c. The second occurence seems to have been introduced by 
62d4490294.


Heiko

> Thanks,
> Rafael
> 
> 
> ---
> From: Rafael J. Wysocki <rjw@sisk.pl>
> Subject: PM / Domains: Fix one more dev_pm_get_subsys_data() return value
> check
> 
> The check agains the return value of dev_pm_get_subsys_data()
> in pm_genpd_add_callbacks() should be modified so that non-negative
> values are not regarded as errors, because dev_pm_get_subsys_data()
> returns 1 if it successfully creates a new object.
> 
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
> ---
>  drivers/base/power/domain.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Index: linux/drivers/base/power/domain.c
> ===================================================================
> --- linux.orig/drivers/base/power/domain.c
> +++ linux/drivers/base/power/domain.c
> @@ -1691,7 +1691,7 @@ int pm_genpd_add_callbacks(struct device
>  	device_pm_lock();
> 
>  	ret = dev_pm_get_subsys_data(dev);
> -	if (ret)
> +	if (ret < 0)
>  		goto out;
> 
>  	spin_lock_irq(&dev->power.lock);

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

Index: linux/drivers/base/power/domain.c
===================================================================
--- linux.orig/drivers/base/power/domain.c
+++ linux/drivers/base/power/domain.c
@@ -1691,7 +1691,7 @@  int pm_genpd_add_callbacks(struct device
 	device_pm_lock();
 
 	ret = dev_pm_get_subsys_data(dev);
-	if (ret)
+	if (ret < 0)
 		goto out;
 
 	spin_lock_irq(&dev->power.lock);