userfaultfd: fix return error if mmap_changing is non-zero in MOVE ioctl
authorLokesh Gidra <lokeshgidra@google.com>
Wed, 17 Jan 2024 22:39:21 +0000 (14:39 -0800)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 22 Feb 2024 18:24:38 +0000 (10:24 -0800)
To be consistent with other uffd ioctl's returning EAGAIN when
mmap_changing is detected, we should change UFFDIO_MOVE to do the same.

Link: https://lkml.kernel.org/r/20240117223922.1445327-1-lokeshgidra@google.com
Signed-off-by: Lokesh Gidra <lokeshgidra@google.com>
Acked-by: Suren Baghdasaryan <surenb@google.com>
Acked-by: Mike Rapoport (IBM) <rppt@kernel.org>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Axel Rasmussen <axelrasmussen@google.com>
Cc: Brian Geffon <bgeffon@google.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Jann Horn <jannh@google.com>
Cc: Kalesh Singh <kaleshsingh@google.com>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Nicolas Geoffray <ngeoffray@google.com>
Cc: Peter Xu <peterx@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/userfaultfd.c

index 959551f..05c8e8a 100644 (file)
@@ -2047,7 +2047,7 @@ static int userfaultfd_move(struct userfaultfd_ctx *ctx,
                        ret = move_pages(ctx, mm, uffdio_move.dst, uffdio_move.src,
                                         uffdio_move.len, uffdio_move.mode);
                else
-                       ret = -EINVAL;
+                       ret = -EAGAIN;
 
                mmap_read_unlock(mm);
                mmput(mm);