Commit 4057a200 authored by Stefan Haberland's avatar Stefan Haberland Committed by Greg Kroah-Hartman

s390/dasd: fix hanging offline processing due to canceled worker

[ Upstream commit 669f3765 ]

During offline processing two worker threads are canceled without
freeing the device reference which leads to a hanging offline process.
Reviewed-by: default avatarJan Hoeppner <hoeppner@linux.ibm.com>
Signed-off-by: default avatarStefan Haberland <sth@linux.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarSasha Levin <alexander.levin@microsoft.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f675ab00
...@@ -2101,8 +2101,11 @@ static int dasd_eckd_basic_to_ready(struct dasd_device *device) ...@@ -2101,8 +2101,11 @@ static int dasd_eckd_basic_to_ready(struct dasd_device *device)
static int dasd_eckd_online_to_ready(struct dasd_device *device) static int dasd_eckd_online_to_ready(struct dasd_device *device)
{ {
cancel_work_sync(&device->reload_device); if (cancel_work_sync(&device->reload_device))
cancel_work_sync(&device->kick_validate); dasd_put_device(device);
if (cancel_work_sync(&device->kick_validate))
dasd_put_device(device);
return 0; return 0;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment