diff --git a/mm/gup.c b/mm/gup.c index 8be20cbec785ee3a005f9611ad2c3f96799e11c7..83f0737e57a715d7baccf24a8a4a669f060961e7 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -947,8 +947,11 @@ static __always_inline long __get_user_pages_locked(struct task_struct *tsk, * start trying again otherwise it can loop forever. */ - if (fatal_signal_pending(current)) + if (fatal_signal_pending(current)) { + if (!pages_done) + pages_done = -EINTR; break; + } *locked = 1; down_read(&mm->mmap_sem);