From: Hillf Danton <hdan...@sina.com> __get_user_pages_locked() will return 0 instead of -EINTR after commit 4426e945df588 ("mm/gup: allow VM_FAULT_RETRY for multiple times") which added extra code to allow gup detect fatal signal faster.
Restore the original -EINTR behavior. Cc: Andrew Morton <a...@linux-foundation.org> Cc: Thomas Gleixner <t...@linutronix.de> Cc: Peter Zijlstra <pet...@infradead.org> Fixes: 4426e945df58 ("mm/gup: allow VM_FAULT_RETRY for multiple times") Reported-by: syzbot+3be1a33f04dc782e9...@syzkaller.appspotmail.com Signed-off-by: Hillf Danton <hdan...@sina.com> Acked-by: Michal Hocko <mho...@suse.com> Signed-off-by: Peter Xu <pet...@redhat.com> Signed-off-by: Linus Torvalds <torva...@linux-foundation.org> https://jira.sw.ru/browse/PSBM-102938 (cherry picked from commit ae46d2aa6a7fbe8ca0946f24b061b6ccdc6c3f25) Signed-off-by: Andrey Ryabinin <aryabi...@virtuozzo.com> --- mm/gup.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mm/gup.c b/mm/gup.c index 3d08b68c210f..049e05960e1e 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -941,8 +941,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; ret = down_read_killable(&mm->mmap_sem); -- 2.25.3 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel