userfaultfd: fix return error if mmap_changing is non-zero in MOVE ioctl

Message ID 20240117223922.1445327-1-lokeshgidra@google.com
State New
Headers
Series userfaultfd: fix return error if mmap_changing is non-zero in MOVE ioctl |

Commit Message

Lokesh Gidra Jan. 17, 2024, 10:39 p.m. UTC
  To be consistent with other uffd ioctl's returning EAGAIN when
mmap_changing is detected, we should change UFFDIO_MOVE to do the same.

Signed-off-by: Lokesh Gidra <lokeshgidra@google.com>
---
 fs/userfaultfd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Suren Baghdasaryan Jan. 17, 2024, 10:46 p.m. UTC | #1
On Wed, Jan 17, 2024 at 2:39 PM Lokesh Gidra <lokeshgidra@google.com> wrote:
>
> To be consistent with other uffd ioctl's returning EAGAIN when
> mmap_changing is detected, we should change UFFDIO_MOVE to do the same.
>
> Signed-off-by: Lokesh Gidra <lokeshgidra@google.com>

Looks correct. Thanks for catching it!

Acked-by: Suren Baghdasaryan <surenb@google.com>

> ---
>  fs/userfaultfd.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c
> index 959551ff9a95..05c8e8a05427 100644
> --- a/fs/userfaultfd.c
> +++ b/fs/userfaultfd.c
> @@ -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);
> --
> 2.43.0.429.g432eaa2c6b-goog
>
  
Mike Rapoport Jan. 25, 2024, 9:37 a.m. UTC | #2
On Wed, Jan 17, 2024 at 02:39:21PM -0800, Lokesh Gidra wrote:
> To be consistent with other uffd ioctl's returning EAGAIN when
> mmap_changing is detected, we should change UFFDIO_MOVE to do the same.
> 
> Signed-off-by: Lokesh Gidra <lokeshgidra@google.com>

Acked-by: Mike Rapoport (IBM) <rppt@kernel.org>

> ---
>  fs/userfaultfd.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c
> index 959551ff9a95..05c8e8a05427 100644
> --- a/fs/userfaultfd.c
> +++ b/fs/userfaultfd.c
> @@ -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);
> -- 
> 2.43.0.429.g432eaa2c6b-goog
> 
>
  

Patch

diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c
index 959551ff9a95..05c8e8a05427 100644
--- a/fs/userfaultfd.c
+++ b/fs/userfaultfd.c
@@ -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);