+8
-4
fs/io-wq.c
+8
-4
fs/io-wq.c
···
445
445
task_unlock(current);
446
446
}
447
447
if ((work->flags & IO_WQ_WORK_NEEDS_USER) && !worker->mm &&
448
-
wq->mm && mmget_not_zero(wq->mm)) {
449
-
use_mm(wq->mm);
450
-
set_fs(USER_DS);
451
-
worker->mm = wq->mm;
448
+
wq->mm) {
449
+
if (mmget_not_zero(wq->mm)) {
450
+
use_mm(wq->mm);
451
+
set_fs(USER_DS);
452
+
worker->mm = wq->mm;
453
+
} else {
454
+
work->flags |= IO_WQ_WORK_CANCEL;
455
+
}
452
456
}
453
457
if (!worker->creds)
454
458
worker->creds = override_creds(wq->creds);