s390/dasd: fix hanging offline processing due to canceled worker
[ Upstream commit 669f3765b755fd8739ab46ce3a9c6292ce8b3d2a ] During offline processing two worker threads are canceled without freeing the device reference which leads to a hanging offline process. Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com> Signed-off-by: Stefan Haberland <sth@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
151751ec48
commit
70866799dd
@ -2035,8 +2035,11 @@ static int dasd_eckd_basic_to_ready(struct dasd_device *device)
|
||||
|
||||
static int dasd_eckd_online_to_ready(struct dasd_device *device)
|
||||
{
|
||||
cancel_work_sync(&device->reload_device);
|
||||
cancel_work_sync(&device->kick_validate);
|
||||
if (cancel_work_sync(&device->reload_device))
|
||||
dasd_put_device(device);
|
||||
if (cancel_work_sync(&device->kick_validate))
|
||||
dasd_put_device(device);
|
||||
|
||||
return 0;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user