public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] driver core: fix async device shutdown hang
@ 2024-09-19  4:31 Stuart Hayes
  2024-09-19  5:17 ` Greg Kroah-Hartman
  2024-09-19 14:16 ` Nathan Chancellor
  0 siblings, 2 replies; 8+ messages in thread
From: Stuart Hayes @ 2024-09-19  4:31 UTC (permalink / raw)
  To: linux-kernel, Greg Kroah-Hartman, Rafael J . Wysocki,
	Martin Belanger, Oliver O'Halloran, Daniel Wagner,
	Keith Busch, Lukas Wunner, David Jeffery, Jeremy Allison,
	Jens Axboe, Christoph Hellwig, Sagi Grimberg, linux-nvme,
	Nathan Chancellor, Jan Kiszka
  Cc: Stuart Hayes

Modify device_shutdown() so that supplier devices do not wait for
consumer devices to be shut down first when the devlink is sync state
only, since the consumer is not dependent on the supplier in this case.

Without this change, a circular dependency could hang the system.

Fixes: 8064952c6504 ("driver core: shut down devices asynchronously")

Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com>
---
The patch this fixes is in driver-core-next and linux-next.

Please let me know if this needs to be a V2 or if it needs anything
else... it is the identical patch I sent in yesterday, except I added
a "Fixes:" tag and the comments.  Thank you for the help!

 drivers/base/core.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index b69b82da8837..76513e360496 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -4898,8 +4898,16 @@ void device_shutdown(void)
 
 		idx = device_links_read_lock();
 		list_for_each_entry_rcu(link, &dev->links.suppliers, c_node,
-				device_links_read_lock_held())
+				device_links_read_lock_held()) {
+			/*
+			 * sync_state_only suppliers don't need to wait,
+			 * aren't reordered on devices_kset, so making them
+			 * wait could result in a hang
+			 */
+			if (device_link_flag_is_sync_state_only(link->flags))
+				continue;
 			link->supplier->p->shutdown_after = cookie;
+		}
 		device_links_read_unlock(idx);
 		put_device(dev);
 
-- 
2.39.3


^ permalink raw reply related	[flat|nested] 8+ messages in thread
* [PATCH] driver core: fix async device shutdown hang
@ 2024-09-17 20:15 Stuart Hayes
  2024-09-17 20:42 ` Greg Kroah-Hartman
  0 siblings, 1 reply; 8+ messages in thread
From: Stuart Hayes @ 2024-09-17 20:15 UTC (permalink / raw)
  To: linux-kernel, Greg Kroah-Hartman, Rafael J . Wysocki,
	Martin Belanger, Oliver O'Halloran, Daniel Wagner,
	Keith Busch, Lukas Wunner, David Jeffery, Jeremy Allison,
	Jens Axboe, Christoph Hellwig, Sagi Grimberg, linux-nvme,
	Nathan Chancellor, Jan Kiszka
  Cc: Stuart Hayes

Modify device_shutdown() so that supplier devices do not wait for
consumer devices to be shut down first when the devlink is sync state
only, since the consumer is not dependent on the supplier in this case.

Without this change, a circular dependency could hang the system.

Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com>
---
 drivers/base/core.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index b69b82da8837..76513e360496 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -4898,8 +4898,16 @@ void device_shutdown(void)
 
 		idx = device_links_read_lock();
 		list_for_each_entry_rcu(link, &dev->links.suppliers, c_node,
-				device_links_read_lock_held())
+				device_links_read_lock_held()) {
+			/*
+			 * sync_state_only suppliers don't need to wait,
+			 * aren't reordered on devices_kset, so making them
+			 * wait could result in a hang
+			 */
+			if (device_link_flag_is_sync_state_only(link->flags))
+				continue;
 			link->supplier->p->shutdown_after = cookie;
+		}
 		device_links_read_unlock(idx);
 		put_device(dev);
 
-- 
2.39.3


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

end of thread, other threads:[~2024-09-19 14:17 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-19  4:31 [PATCH] driver core: fix async device shutdown hang Stuart Hayes
2024-09-19  5:17 ` Greg Kroah-Hartman
2024-09-19 14:16 ` Nathan Chancellor
  -- strict thread matches above, loose matches on Subject: below --
2024-09-17 20:15 Stuart Hayes
2024-09-17 20:42 ` Greg Kroah-Hartman
2024-09-18  0:20   ` stuart hayes
2024-09-18  6:12     ` Greg Kroah-Hartman
2024-09-18 21:07       ` Laurence Oberman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox