linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] driver core: Fix creation of device links with PM-runtime flags
@ 2019-07-30  9:28 ` Rafael J. Wysocki
  2019-07-30  9:41   ` Dmitry Osipenko
  2019-07-30  9:56   ` Marek Szyprowski
  0 siblings, 2 replies; 3+ messages in thread
From: Rafael J. Wysocki @ 2019-07-30  9:28 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: LKML, Linux PM, Saravana Kannan, Lukas Wunner, Jon Hunter,
	Ulf Hansson, Marek Szyprowski, Dmitry Osipenko

From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

After commit 515db266a9da ("driver core: Remove device link creation
limitation"), if PM-runtime flags are passed to device_link_add(), it
will fail (returning NULL) due to an overly restrictive flags check
introduced by that commit.

Fix this issue by extending the check in question to cover the
PM-runtime flags too.

Fixes: 515db266a9da ("driver core: Remove device link creation limitation")
Reported-by: Dmitry Osipenko <digetx@gmail.com>
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
 drivers/base/core.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Index: linux-pm/drivers/base/core.c
===================================================================
--- linux-pm.orig/drivers/base/core.c
+++ linux-pm/drivers/base/core.c
@@ -213,6 +213,9 @@ void device_pm_move_to_tail(struct devic
 			       DL_FLAG_AUTOREMOVE_SUPPLIER | \
 			       DL_FLAG_AUTOPROBE_CONSUMER)
 
+#define DL_ADD_VALID_FLAGS (DL_MANAGED_LINK_FLAGS | DL_FLAG_STATELESS | \
+			    DL_FLAG_PM_RUNTIME | DL_FLAG_RPM_ACTIVE)
+
 /**
  * device_link_add - Create a link between two devices.
  * @consumer: Consumer end of the link.
@@ -274,8 +277,7 @@ struct device_link *device_link_add(stru
 {
 	struct device_link *link;
 
-	if (!consumer || !supplier ||
-	    (flags & ~(DL_FLAG_STATELESS | DL_MANAGED_LINK_FLAGS)) ||
+	if (!consumer || !supplier || flags & ~DL_ADD_VALID_FLAGS ||
 	    (flags & DL_FLAG_STATELESS && flags & DL_MANAGED_LINK_FLAGS) ||
 	    (flags & DL_FLAG_AUTOPROBE_CONSUMER &&
 	     flags & (DL_FLAG_AUTOREMOVE_CONSUMER |




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] driver core: Fix creation of device links with PM-runtime flags
  2019-07-30  9:28 ` [PATCH] driver core: Fix creation of device links with PM-runtime flags Rafael J. Wysocki
@ 2019-07-30  9:41   ` Dmitry Osipenko
  2019-07-30  9:56   ` Marek Szyprowski
  1 sibling, 0 replies; 3+ messages in thread
From: Dmitry Osipenko @ 2019-07-30  9:41 UTC (permalink / raw)
  To: Rafael J. Wysocki, Greg Kroah-Hartman
  Cc: LKML, Linux PM, Saravana Kannan, Lukas Wunner, Jon Hunter,
	Ulf Hansson, Marek Szyprowski

30.07.2019 12:28, Rafael J. Wysocki пишет:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> 
> After commit 515db266a9da ("driver core: Remove device link creation
> limitation"), if PM-runtime flags are passed to device_link_add(), it
> will fail (returning NULL) due to an overly restrictive flags check
> introduced by that commit.
> 
> Fix this issue by extending the check in question to cover the
> PM-runtime flags too.
> 
> Fixes: 515db266a9da ("driver core: Remove device link creation limitation")
> Reported-by: Dmitry Osipenko <digetx@gmail.com>
> Tested-by: Jon Hunter <jonathanh@nvidia.com>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
>  drivers/base/core.c |    6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> Index: linux-pm/drivers/base/core.c
> ===================================================================
> --- linux-pm.orig/drivers/base/core.c
> +++ linux-pm/drivers/base/core.c
> @@ -213,6 +213,9 @@ void device_pm_move_to_tail(struct devic
>  			       DL_FLAG_AUTOREMOVE_SUPPLIER | \
>  			       DL_FLAG_AUTOPROBE_CONSUMER)
>  
> +#define DL_ADD_VALID_FLAGS (DL_MANAGED_LINK_FLAGS | DL_FLAG_STATELESS | \
> +			    DL_FLAG_PM_RUNTIME | DL_FLAG_RPM_ACTIVE)
> +
>  /**
>   * device_link_add - Create a link between two devices.
>   * @consumer: Consumer end of the link.
> @@ -274,8 +277,7 @@ struct device_link *device_link_add(stru
>  {
>  	struct device_link *link;
>  
> -	if (!consumer || !supplier ||
> -	    (flags & ~(DL_FLAG_STATELESS | DL_MANAGED_LINK_FLAGS)) ||
> +	if (!consumer || !supplier || flags & ~DL_ADD_VALID_FLAGS ||
>  	    (flags & DL_FLAG_STATELESS && flags & DL_MANAGED_LINK_FLAGS) ||
>  	    (flags & DL_FLAG_AUTOPROBE_CONSUMER &&
>  	     flags & (DL_FLAG_AUTOREMOVE_CONSUMER |
> 
> 
> 

Thank you very much!

Tested-by: Dmitry Osipenko <digetx@gmail.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] driver core: Fix creation of device links with PM-runtime flags
  2019-07-30  9:28 ` [PATCH] driver core: Fix creation of device links with PM-runtime flags Rafael J. Wysocki
  2019-07-30  9:41   ` Dmitry Osipenko
@ 2019-07-30  9:56   ` Marek Szyprowski
  1 sibling, 0 replies; 3+ messages in thread
From: Marek Szyprowski @ 2019-07-30  9:56 UTC (permalink / raw)
  To: Rafael J. Wysocki, Greg Kroah-Hartman
  Cc: LKML, Linux PM, Saravana Kannan, Lukas Wunner, Jon Hunter,
	Ulf Hansson, Dmitry Osipenko

Hi,

On 2019-07-30 11:28, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>
> After commit 515db266a9da ("driver core: Remove device link creation
> limitation"), if PM-runtime flags are passed to device_link_add(), it
> will fail (returning NULL) due to an overly restrictive flags check
> introduced by that commit.
>
> Fix this issue by extending the check in question to cover the
> PM-runtime flags too.
>
> Fixes: 515db266a9da ("driver core: Remove device link creation limitation")
> Reported-by: Dmitry Osipenko <digetx@gmail.com>
> Tested-by: Jon Hunter <jonathanh@nvidia.com>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>

The merged commit also has my 'tested' tags, but I did my tests on v1, 
which worked fine. The offending check has been added in v2 while 
keeping the tags. Thanks for spotting this and fixing the issue, due to 
holidays time, I didn't manage to test v2 before it got merged.

> ---
>   drivers/base/core.c |    6 ++++--
>   1 file changed, 4 insertions(+), 2 deletions(-)
>
> Index: linux-pm/drivers/base/core.c
> ===================================================================
> --- linux-pm.orig/drivers/base/core.c
> +++ linux-pm/drivers/base/core.c
> @@ -213,6 +213,9 @@ void device_pm_move_to_tail(struct devic
>   			       DL_FLAG_AUTOREMOVE_SUPPLIER | \
>   			       DL_FLAG_AUTOPROBE_CONSUMER)
>   
> +#define DL_ADD_VALID_FLAGS (DL_MANAGED_LINK_FLAGS | DL_FLAG_STATELESS | \
> +			    DL_FLAG_PM_RUNTIME | DL_FLAG_RPM_ACTIVE)
> +
>   /**
>    * device_link_add - Create a link between two devices.
>    * @consumer: Consumer end of the link.
> @@ -274,8 +277,7 @@ struct device_link *device_link_add(stru
>   {
>   	struct device_link *link;
>   
> -	if (!consumer || !supplier ||
> -	    (flags & ~(DL_FLAG_STATELESS | DL_MANAGED_LINK_FLAGS)) ||
> +	if (!consumer || !supplier || flags & ~DL_ADD_VALID_FLAGS ||
>   	    (flags & DL_FLAG_STATELESS && flags & DL_MANAGED_LINK_FLAGS) ||
>   	    (flags & DL_FLAG_AUTOPROBE_CONSUMER &&
>   	     flags & (DL_FLAG_AUTOREMOVE_CONSUMER |
>
>
>
>
>
Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-07-30  9:56 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20190730092907epcas2p486e986eff88d4b52f707b8cde71fb879@epcas2p4.samsung.com>
2019-07-30  9:28 ` [PATCH] driver core: Fix creation of device links with PM-runtime flags Rafael J. Wysocki
2019-07-30  9:41   ` Dmitry Osipenko
2019-07-30  9:56   ` Marek Szyprowski

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).