Pingfan Liu
3297c8fc65
drivers/base: stop new probing during shutdown
...
There is a race window in device_shutdown(), which may cause
-1. parent device shut down before child or
-2. no shutdown on a new probing device.
For 1st, taking the following scenario:
device_shutdown new plugin device
list_del_init(parent_dev);
spin_unlock(list_lock);
device_add(child)
probe child
shutdown parent_dev
--> now child is on the tail of devices_kset
For 2nd, taking the following scenario:
device_shutdown new plugin device
device_add(dev)
device_lock(dev);
...
device_unlock(dev);
probe dev
--> now, the new occurred dev has no opportunity to shutdown
To fix this race issue, just prevent the new probing request. With this
logic, device_shutdown() is more similar to dpm_prepare().
Signed-off-by: Pingfan Liu <kernelfans@gmail.com >
Reviewed-by: Rafael J. Wysocki <rafael@kernel.org >
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2018-07-21 09:51:44 +02:00
..
2018-06-21 14:19:08 +02:00
2018-06-06 13:49:25 -07:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-07-21 09:51:44 +02:00
2018-06-04 10:58:12 -07:00
2018-06-24 06:33:54 +08:00
2018-06-17 08:38:55 +09:00
2018-06-12 18:28:00 -07:00
2018-06-12 16:19:22 -07:00
2018-06-24 06:31:54 +08:00
2018-06-15 18:10:01 -03:00
2018-06-24 19:16:42 +08:00
2018-06-06 18:39:49 -07:00
2018-06-19 10:40:29 +02:00
2018-06-07 10:23:33 -07:00
2018-06-24 06:31:54 +08:00
2018-06-08 17:21:52 -07:00
2018-06-12 16:19:22 -07:00
2018-06-15 18:10:01 -03:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-22 10:58:27 +02:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-22 11:03:43 +10:00
2018-06-20 16:42:39 +09:00
2018-06-12 16:19:22 -07:00
2018-06-16 16:40:36 -07:00
2018-06-11 12:09:19 -07:00
2018-06-12 16:19:22 -07:00
2018-06-14 16:21:46 +09:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-21 07:22:30 +09:00
2018-06-15 18:10:01 -03:00
2018-07-10 17:22:35 +02:00
2018-06-12 16:19:22 -07:00
2018-06-22 14:22:02 +02:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-24 06:33:54 +08:00
2018-06-07 10:23:33 -07:00
2018-06-12 16:19:22 -07:00
2018-06-15 18:10:01 -03:00
2018-06-17 05:25:18 +09:00
2018-06-12 18:28:00 -07:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-14 16:21:46 +09:00
2018-06-14 16:21:46 +09:00
2018-06-12 16:19:22 -07:00
2018-06-12 18:28:00 -07:00
2018-06-21 07:13:42 +09:00
2018-06-12 16:19:22 -07:00
2018-06-12 18:28:00 -07:00
2018-06-05 16:20:22 -07:00
2018-06-08 15:16:44 -07:00
2018-06-21 18:59:46 +02:00
2018-06-12 16:19:22 -07:00
2018-06-12 18:28:00 -07:00
2018-06-19 15:53:32 +05:30
2018-06-12 16:19:22 -07:00
2018-06-04 10:58:12 -07:00
2018-06-15 18:10:01 -03:00
2018-06-12 18:28:00 -07:00
2018-06-12 16:19:22 -07:00
2018-05-29 16:38:16 +01:00
2018-06-06 18:39:49 -07:00
2018-07-10 17:22:35 +02:00
2018-06-15 18:10:01 -03:00
2018-06-07 12:34:37 -07:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-20 07:59:53 +09:00
2018-06-14 16:25:43 +09:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-15 07:55:25 +09:00
2018-06-12 18:28:00 -07:00
2018-06-04 12:35:03 -07:00
2018-06-11 07:20:17 -07:00
2018-06-19 07:44:51 +09:00
2018-06-15 18:10:01 -03:00
2018-06-24 06:33:54 +08:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-15 07:55:25 +09:00
2018-06-15 18:11:26 -03:00
2018-06-12 16:19:22 -07:00
2018-06-15 18:10:01 -03:00
2018-06-12 16:19:22 -07:00
2018-06-12 18:28:00 -07:00
2018-06-15 07:31:07 +09:00
2018-06-12 16:19:22 -07:00
2018-06-15 07:31:07 +09:00
2018-06-12 16:19:22 -07:00
2018-06-12 13:11:26 -07:00
2018-06-16 06:35:02 +09:00
2018-06-17 05:25:18 +09:00
2018-06-12 16:19:22 -07:00
2018-06-16 06:35:02 +09:00
2018-06-05 16:20:22 -07:00
2018-06-12 12:56:02 -07:00
2018-06-23 20:44:11 +08:00
2018-06-06 17:27:14 -07:00