io-wq: cancel work if we fail getting a mm reference

If we require mm and user context, mark the request for cancellation
if we fail to acquire the desired mm.

Signed-off-by: Jens Axboe <axboe@kernel.dk>

Changed files
+8 -4
fs
+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);