From: Mike Rapoport <rppt@linux.ibm.com> To: Catalin Marinas <catalin.marinas@arm.com> Cc: Andrey Konovalov <andreyknvl@google.com>, linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org, Vincenzo Frascino <vincenzo.frascino@arm.com>, Will Deacon <will.deacon@arm.com>, Mark Rutland <mark.rutland@arm.com>, Andrew Morton <akpm@linux-foundation.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Kees Cook <keescook@chromium.org>, Yishai Hadas <yishaih@mellanox.com>, Felix Kuehling <Felix.Kuehling@amd.com>, Alexander Deucher <Alexander.Deucher@amd.com>, Christian Koenig <Christian.Koenig@amd.com>, Mauro Carvalho Chehab <mchehab@kernel.org>, Jens Wiklander <jens.wiklander@linaro.org>, Alex Williamson <alex.williamson@redhat.com>, Leon Romanovsky <leon@kernel.org>, Luc Van Oostenryck <luc.vanoostenryck@gmail.com>, Dave Martin <Dave.Martin@arm.com>, Khalid Aziz <khalid.aziz@oracle.com>, enh <enh@google.com>, Jason Gunthorpe <jgg@ziepe.ca>, Christoph Hellwig <hch@infradead.org>, Dmitry Vyukov <dvyukov@google.com>, Kostya Serebryany <kcc@google.com>, Evgeniy Stepanov <eugenis@google.com>, Lee Smith <Lee.Smith@arm.com>, Ramana Radhakrishnan <Ramana.Radhakrishnan@arm.com>, Jacob Bramley <Jacob.Bramley@arm.com>, Ruben Ayrapetyan <Ruben.Ayrapetyan@arm.com>, Robin Murphy <robin.murphy@arm.com>, Kevin Brodsky <kevin.brodsky@arm.com>, Szabolcs Nagy <Szabolcs.Nagy@arm.com>, Al Viro <viro@zeniv.linux.org.uk> Subject: Re: [PATCH v18 08/15] userfaultfd: untag user pointers Date: Wed, 17 Jul 2019 14:09:13 +0300 Message-ID: <20190717110910.GA12017@rapoport-lnx> (raw) In-Reply-To: <20190624175120.GN29120@arrakis.emea.arm.com> On Mon, Jun 24, 2019 at 06:51:21PM +0100, Catalin Marinas wrote: > On Mon, Jun 24, 2019 at 04:32:53PM +0200, Andrey Konovalov wrote: > > This patch is a part of a series that extends kernel ABI to allow to pass > > tagged user pointers (with the top byte set to something else other than > > 0x00) as syscall arguments. > > > > userfaultfd code use provided user pointers for vma lookups, which can > > only by done with untagged pointers. > > > > Untag user pointers in validate_range(). > > > > Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com> > > Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> > > Reviewed-by: Kees Cook <keescook@chromium.org> > > Signed-off-by: Andrey Konovalov <andreyknvl@google.com> > > --- > > fs/userfaultfd.c | 22 ++++++++++++---------- > > 1 file changed, 12 insertions(+), 10 deletions(-) > > Same here, it needs an ack from Al Viro. The userfault patches usually go via -mm tree, not sure if Al looks at them :) FWIW, you can add Reviewed-by: Mike Rapoport <rppt@linux.ibm.com> > > diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c > > index ae0b8b5f69e6..c2be36a168ca 100644 > > --- a/fs/userfaultfd.c > > +++ b/fs/userfaultfd.c > > @@ -1261,21 +1261,23 @@ static __always_inline void wake_userfault(struct userfaultfd_ctx *ctx, > > } > > > > static __always_inline int validate_range(struct mm_struct *mm, > > - __u64 start, __u64 len) > > + __u64 *start, __u64 len) > > { > > __u64 task_size = mm->task_size; > > > > - if (start & ~PAGE_MASK) > > + *start = untagged_addr(*start); > > + > > + if (*start & ~PAGE_MASK) > > return -EINVAL; > > if (len & ~PAGE_MASK) > > return -EINVAL; > > if (!len) > > return -EINVAL; > > - if (start < mmap_min_addr) > > + if (*start < mmap_min_addr) > > return -EINVAL; > > - if (start >= task_size) > > + if (*start >= task_size) > > return -EINVAL; > > - if (len > task_size - start) > > + if (len > task_size - *start) > > return -EINVAL; > > return 0; > > } > > @@ -1325,7 +1327,7 @@ static int userfaultfd_register(struct userfaultfd_ctx *ctx, > > goto out; > > } > > > > - ret = validate_range(mm, uffdio_register.range.start, > > + ret = validate_range(mm, &uffdio_register.range.start, > > uffdio_register.range.len); > > if (ret) > > goto out; > > @@ -1514,7 +1516,7 @@ static int userfaultfd_unregister(struct userfaultfd_ctx *ctx, > > if (copy_from_user(&uffdio_unregister, buf, sizeof(uffdio_unregister))) > > goto out; > > > > - ret = validate_range(mm, uffdio_unregister.start, > > + ret = validate_range(mm, &uffdio_unregister.start, > > uffdio_unregister.len); > > if (ret) > > goto out; > > @@ -1665,7 +1667,7 @@ static int userfaultfd_wake(struct userfaultfd_ctx *ctx, > > if (copy_from_user(&uffdio_wake, buf, sizeof(uffdio_wake))) > > goto out; > > > > - ret = validate_range(ctx->mm, uffdio_wake.start, uffdio_wake.len); > > + ret = validate_range(ctx->mm, &uffdio_wake.start, uffdio_wake.len); > > if (ret) > > goto out; > > > > @@ -1705,7 +1707,7 @@ static int userfaultfd_copy(struct userfaultfd_ctx *ctx, > > sizeof(uffdio_copy)-sizeof(__s64))) > > goto out; > > > > - ret = validate_range(ctx->mm, uffdio_copy.dst, uffdio_copy.len); > > + ret = validate_range(ctx->mm, &uffdio_copy.dst, uffdio_copy.len); > > if (ret) > > goto out; > > /* > > @@ -1761,7 +1763,7 @@ static int userfaultfd_zeropage(struct userfaultfd_ctx *ctx, > > sizeof(uffdio_zeropage)-sizeof(__s64))) > > goto out; > > > > - ret = validate_range(ctx->mm, uffdio_zeropage.range.start, > > + ret = validate_range(ctx->mm, &uffdio_zeropage.range.start, > > uffdio_zeropage.range.len); > > if (ret) > > goto out; > > -- > > 2.22.0.410.gd8fdbe21b5-goog -- Sincerely yours, Mike.
next prev parent reply index Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-06-24 14:32 [PATCH v18 00/15] arm64: untag user pointers passed to the kernel Andrey Konovalov 2019-06-24 14:32 ` [PATCH v18 01/15] arm64: untag user pointers in access_ok and __uaccess_mask_ptr Andrey Konovalov 2019-06-24 14:32 ` [PATCH v18 02/15] arm64: Introduce prctl() options to control the tagged user addresses ABI Andrey Konovalov 2019-06-24 15:04 ` Kees Cook 2019-06-24 14:32 ` [PATCH v18 03/15] lib: untag user pointers in strn*_user Andrey Konovalov 2019-06-24 14:32 ` [PATCH v18 04/15] mm: untag user pointers passed to memory syscalls Andrey Konovalov 2019-06-24 14:32 ` [PATCH v18 05/15] mm: untag user pointers in mm/gup.c Andrey Konovalov 2019-06-24 14:32 ` [PATCH v18 06/15] mm: untag user pointers in get_vaddr_frames Andrey Konovalov 2019-06-24 14:32 ` [PATCH v18 07/15] fs/namespace: untag user pointers in copy_mount_options Andrey Konovalov 2019-06-24 17:50 ` Catalin Marinas 2019-07-15 16:00 ` Andrey Konovalov 2019-07-22 16:46 ` Kees Cook 2019-06-24 14:32 ` [PATCH v18 08/15] userfaultfd: untag user pointers Andrey Konovalov 2019-06-24 17:51 ` Catalin Marinas 2019-07-15 16:00 ` Andrey Konovalov 2019-07-17 11:09 ` Mike Rapoport [this message] 2019-07-17 11:46 ` Andrey Konovalov 2019-06-24 14:32 ` [PATCH v18 09/15] drm/amdgpu: " Andrey Konovalov 2019-06-24 15:00 ` Kees Cook 2019-06-24 14:32 ` [PATCH v18 10/15] drm/radeon: untag user pointers in radeon_gem_userptr_ioctl Andrey Konovalov 2019-06-24 15:01 ` Kees Cook 2019-06-24 15:02 ` Kees Cook 2019-06-26 17:50 ` Khalid Aziz 2019-06-24 14:32 ` [PATCH v18 11/15] IB/mlx4: untag user pointers in mlx4_get_umem_mr Andrey Konovalov 2019-06-24 15:01 ` Kees Cook 2019-06-24 17:40 ` Catalin Marinas 2019-07-15 16:01 ` Andrey Konovalov 2019-07-15 18:05 ` Jason Gunthorpe 2019-07-16 10:42 ` Andrey Konovalov 2019-07-16 12:06 ` Jason Gunthorpe 2019-07-17 11:42 ` Andrey Konovalov 2019-07-17 11:44 ` Andrey Konovalov 2019-07-17 11:58 ` Jason Gunthorpe 2019-07-17 13:36 ` Andrey Konovalov 2019-06-24 14:32 ` [PATCH v18 12/15] media/v4l2-core: untag user pointers in videobuf_dma_contig_user_get Andrey Konovalov 2019-06-24 14:32 ` [PATCH v18 13/15] tee/shm: untag user pointers in tee_shm_register Andrey Konovalov 2019-06-24 14:32 ` [PATCH v18 14/15] vfio/type1: untag user pointers in vaddr_get_pfn Andrey Konovalov 2019-06-24 14:33 ` [PATCH v18 15/15] selftests, arm64: add a selftest for passing tagged pointers to kernel Andrey Konovalov 2019-06-24 15:02 ` Kees Cook 2019-06-24 17:38 ` Catalin Marinas 2019-08-23 13:56 ` Cristian Marussi 2019-08-23 17:16 ` Andrey Konovalov 2019-08-23 17:49 ` Cristian Marussi 2019-09-04 14:52 ` Andrey Konovalov 2019-09-04 16:22 ` Cristian Marussi 2019-09-04 16:42 ` Andrey Konovalov 2019-06-26 17:18 ` [PATCH v18 00/15] arm64: untag user pointers passed to the kernel Catalin Marinas
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190717110910.GA12017@rapoport-lnx \ --to=rppt@linux.ibm.com \ --cc=Alexander.Deucher@amd.com \ --cc=Christian.Koenig@amd.com \ --cc=Dave.Martin@arm.com \ --cc=Felix.Kuehling@amd.com \ --cc=Jacob.Bramley@arm.com \ --cc=Lee.Smith@arm.com \ --cc=Ramana.Radhakrishnan@arm.com \ --cc=Ruben.Ayrapetyan@arm.com \ --cc=Szabolcs.Nagy@arm.com \ --cc=akpm@linux-foundation.org \ --cc=alex.williamson@redhat.com \ --cc=amd-gfx@lists.freedesktop.org \ --cc=andreyknvl@google.com \ --cc=catalin.marinas@arm.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=dvyukov@google.com \ --cc=enh@google.com \ --cc=eugenis@google.com \ --cc=gregkh@linuxfoundation.org \ --cc=hch@infradead.org \ --cc=jens.wiklander@linaro.org \ --cc=jgg@ziepe.ca \ --cc=kcc@google.com \ --cc=keescook@chromium.org \ --cc=kevin.brodsky@arm.com \ --cc=khalid.aziz@oracle.com \ --cc=kvm@vger.kernel.org \ --cc=leon@kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-kselftest@vger.kernel.org \ --cc=linux-media@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=linux-rdma@vger.kernel.org \ --cc=luc.vanoostenryck@gmail.com \ --cc=mark.rutland@arm.com \ --cc=mchehab@kernel.org \ --cc=robin.murphy@arm.com \ --cc=vincenzo.frascino@arm.com \ --cc=viro@zeniv.linux.org.uk \ --cc=will.deacon@arm.com \ --cc=yishaih@mellanox.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
KVM Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/kvm/0 kvm/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 kvm kvm/ https://lore.kernel.org/kvm \ kvm@vger.kernel.org public-inbox-index kvm Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.kvm AGPL code for this site: git clone https://public-inbox.org/public-inbox.git