Subject: [PATCH v2] userfaultfd: fix UFFDIO_CONTINUE ioctl request definition

This ioctl request reads from uffdio_continue structure which justifies
_IOC_READ flag.
See NOTEs in include/uapi/asm-generic/ioctl.h for more information.

Fixes: f619147104c8 ("userfaultfd: add UFFDIO_CONTINUE ioctl")
Signed-off-by: Gleb Fotengauer-Malinovskiy <[email protected]>
Acked-by: Peter Xu <[email protected]>
---
include/uapi/linux/userfaultfd.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

v2 fix commit message

diff --git a/include/uapi/linux/userfaultfd.h b/include/uapi/linux/userfaultfd.h
index bafbeb1a2624..650480f41f1d 100644
--- a/include/uapi/linux/userfaultfd.h
+++ b/include/uapi/linux/userfaultfd.h
@@ -80,8 +80,8 @@
struct uffdio_zeropage)
#define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, \
struct uffdio_writeprotect)
-#define UFFDIO_CONTINUE _IOR(UFFDIO, _UFFDIO_CONTINUE, \
- struct uffdio_continue)
+#define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, \
+ struct uffdio_continue)

/* read() structure */
struct uffd_msg {
--
glebfm


2021-06-01 16:43:34

by Axel Rasmussen

[permalink] [raw]
Subject: Re: [PATCH v2] userfaultfd: fix UFFDIO_CONTINUE ioctl request definition

Thanks for catching this!

Reviewed-by: Axel Rasmussen <[email protected]>

On Tue, Jun 1, 2021 at 7:34 AM Gleb Fotengauer-Malinovskiy
<[email protected]> wrote:
>
> This ioctl request reads from uffdio_continue structure which justifies
> _IOC_READ flag.
> See NOTEs in include/uapi/asm-generic/ioctl.h for more information.
>
> Fixes: f619147104c8 ("userfaultfd: add UFFDIO_CONTINUE ioctl")
> Signed-off-by: Gleb Fotengauer-Malinovskiy <[email protected]>
> Acked-by: Peter Xu <[email protected]>
> ---
> include/uapi/linux/userfaultfd.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> v2 fix commit message
>
> diff --git a/include/uapi/linux/userfaultfd.h b/include/uapi/linux/userfaultfd.h
> index bafbeb1a2624..650480f41f1d 100644
> --- a/include/uapi/linux/userfaultfd.h
> +++ b/include/uapi/linux/userfaultfd.h
> @@ -80,8 +80,8 @@
> struct uffdio_zeropage)
> #define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, \
> struct uffdio_writeprotect)
> -#define UFFDIO_CONTINUE _IOR(UFFDIO, _UFFDIO_CONTINUE, \
> - struct uffdio_continue)
> +#define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, \
> + struct uffdio_continue)
>
> /* read() structure */
> struct uffd_msg {
> --
> glebfm
>

2021-06-23 02:43:25

by Dmitry V. Levin

[permalink] [raw]
Subject: Re: [PATCH v2] userfaultfd: fix UFFDIO_CONTINUE ioctl request definition

Hi,

On Tue, Jun 01, 2021 at 05:34:32PM +0300, Gleb Fotengauer-Malinovskiy wrote:
> This ioctl request reads from uffdio_continue structure which justifies
> _IOC_READ flag.
> See NOTEs in include/uapi/asm-generic/ioctl.h for more information.

These ioctl flag usage rules seem to be a perpetual source of mistakes.
I suggest a slightly different wording of the commit message which is
hopefully a bit easier to follow:

"This ioctl request reads from uffdio_continue structure written by
userspace which justifies _IOC_WRITE flag. It also writes back to that
structure which justifies _IOC_READ flag.

See NOTEs in include/uapi/asm-generic/ioctl.h for more information."

Please make sure this patch is merged before v5.13 is released, otherwise
the UAPI bug would have to stay for backwards ABI compatibility.

> Fixes: f619147104c8 ("userfaultfd: add UFFDIO_CONTINUE ioctl")
> Signed-off-by: Gleb Fotengauer-Malinovskiy <[email protected]>
> Acked-by: Peter Xu <[email protected]>
> ---
> include/uapi/linux/userfaultfd.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> v2 fix commit message
>
> diff --git a/include/uapi/linux/userfaultfd.h b/include/uapi/linux/userfaultfd.h
> index bafbeb1a2624..650480f41f1d 100644
> --- a/include/uapi/linux/userfaultfd.h
> +++ b/include/uapi/linux/userfaultfd.h
> @@ -80,8 +80,8 @@
> struct uffdio_zeropage)
> #define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, \
> struct uffdio_writeprotect)
> -#define UFFDIO_CONTINUE _IOR(UFFDIO, _UFFDIO_CONTINUE, \
> - struct uffdio_continue)
> +#define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, \
> + struct uffdio_continue)
>
> /* read() structure */
> struct uffd_msg {

Reviewed-by: Dmitry V. Levin <[email protected]>


--
ldv