mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-24 06:44:23 +08:00
s390/dasd: fix hanging offline processing due to canceled worker
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>
This commit is contained in:
parent
7c6553d4db
commit
669f3765b7
@ -2038,8 +2038,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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user