From: Andrey Konovalov <andreyknvl@google.com>
To: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: "Catalin Marinas" <catalin.marinas@arm.com>,
"Will Deacon" <will.deacon@arm.com>,
"Mark Rutland" <mark.rutland@arm.com>,
"Robin Murphy" <robin.murphy@arm.com>,
"Kees Cook" <keescook@chromium.org>,
"Kate Stewart" <kstewart@linuxfoundation.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Ingo Molnar" <mingo@kernel.org>,
"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
"Shuah Khan" <shuah@kernel.org>,
"Vincenzo Frascino" <vincenzo.frascino@arm.com>,
"Eric Dumazet" <edumazet@google.com>,
"David S. Miller" <davem@davemloft.net>,
"Alexei Starovoitov" <ast@kernel.org>,
"Daniel Borkmann" <daniel@iogearbox.net>,
"Steven Rostedt" <rostedt@goodmis.org>,
"Ingo Molnar" <mingo@redhat.com>,
"Peter Zijlstra" <peterz@infradead.org>,
"Arnaldo Carvalho de Melo" <acme@kernel.org>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"David (ChunMing) Zhou" <David1.Zhou@amd.com>,
"Yishai Hadas" <yishaih@mellanox.com>,
"Jens Wiklander" <jens.wiklander@linaro.org>,
"Alex Williamson" <alex.williamson@redhat.com>,
"Linux ARM" <linux-arm-kernel@lists.infradead.org>,
"Linux Memory Management List" <linux-mm@kvack.org>,
linux-arch <linux-arch@vger.kernel.org>,
netdev <netdev@vger.kernel.org>, bpf <bpf@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,
"open list:KERNEL SELFTEST FRAMEWORK"
<linux-kselftest@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.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>,
"Chintan Pandya" <cpandya@codeaurora.org>,
"Luc Van Oostenryck" <luc.vanoostenryck@gmail.com>,
"Dave Martin" <Dave.Martin@arm.com>,
"Szabolcs Nagy" <Szabolcs.Nagy@arm.com>,
"Kevin Brodsky" <kevin.brodsky@arm.com>
Subject: Re: [PATCH v13 17/20] media/v4l2-core, arm64: untag user pointers in videobuf_dma_contig_user_get
Date: Mon, 1 Apr 2019 18:13:19 +0200 [thread overview]
Message-ID: <CAAeHK+wiGbDtJ3d3um=OQ3VBt1tfu0f2uZ73UfDUfvNFjqPGfw@mail.gmail.com> (raw)
In-Reply-To: <bfaae923-98aa-63e7-c50b-8649dc5fe2bb@arm.com>
On Mon, Mar 25, 2019 at 3:08 PM Kevin Brodsky <kevin.brodsky@arm.com> wrote:
>
> On 22/03/2019 16:07, Catalin Marinas wrote:
> > On Wed, Mar 20, 2019 at 03:51:31PM +0100, Andrey Konovalov wrote:
> >> This patch is a part of a series that extends arm64 kernel ABI to allow to
> >> pass tagged user pointers (with the top byte set to something else other
> >> than 0x00) as syscall arguments.
> >>
> >> videobuf_dma_contig_user_get() uses provided user pointers for vma
> >> lookups, which can only by done with untagged pointers.
> >>
> >> Untag the pointers in this function.
> >>
> >> Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
> >> ---
> >> drivers/media/v4l2-core/videobuf-dma-contig.c | 9 +++++----
> >> 1 file changed, 5 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/drivers/media/v4l2-core/videobuf-dma-contig.c b/drivers/media/v4l2-core/videobuf-dma-contig.c
> >> index e1bf50df4c70..8a1ddd146b17 100644
> >> --- a/drivers/media/v4l2-core/videobuf-dma-contig.c
> >> +++ b/drivers/media/v4l2-core/videobuf-dma-contig.c
> >> @@ -160,6 +160,7 @@ static void videobuf_dma_contig_user_put(struct videobuf_dma_contig_memory *mem)
> >> static int videobuf_dma_contig_user_get(struct videobuf_dma_contig_memory *mem,
> >> struct videobuf_buffer *vb)
> >> {
> >> + unsigned long untagged_baddr = untagged_addr(vb->baddr);
> >> struct mm_struct *mm = current->mm;
> >> struct vm_area_struct *vma;
> >> unsigned long prev_pfn, this_pfn;
> >> @@ -167,22 +168,22 @@ static int videobuf_dma_contig_user_get(struct videobuf_dma_contig_memory *mem,
> >> unsigned int offset;
> >> int ret;
> >>
> >> - offset = vb->baddr & ~PAGE_MASK;
> >> + offset = untagged_baddr & ~PAGE_MASK;
> >> mem->size = PAGE_ALIGN(vb->size + offset);
> >> ret = -EINVAL;
> >>
> >> down_read(&mm->mmap_sem);
> >>
> >> - vma = find_vma(mm, vb->baddr);
> >> + vma = find_vma(mm, untagged_baddr);
> >> if (!vma)
> >> goto out_up;
> >>
> >> - if ((vb->baddr + mem->size) > vma->vm_end)
> >> + if ((untagged_baddr + mem->size) > vma->vm_end)
> >> goto out_up;
> >>
> >> pages_done = 0;
> >> prev_pfn = 0; /* kill warning */
> >> - user_address = vb->baddr;
> >> + user_address = untagged_baddr;
> >>
> >> while (pages_done < (mem->size >> PAGE_SHIFT)) {
> >> ret = follow_pfn(vma, user_address, &this_pfn);
> > I don't think vb->baddr here is anonymous mmap() but worth checking the
> > call paths.
The call path is
__videobuf_iolock()->videobuf_dma_contig_user_get()->find_vma().
>
> I spent some time on this, I didn't find any restriction on the kind of mapping
> that's allowed here. The API regarding V4L2_MEMORY_USERPTR doesn't seem to say
> anything about that either [0] [1]. It's probably best to ask the V4L2 maintainers.
Mauro, could you comment on whether the vb->baddr argument for the
V4L2_MEMORY_USERPTR API can come from an anonymous memory mapping?
>
> Kevin
>
> [0] https://www.kernel.org/doc/html/latest/media/uapi/v4l/vidioc-qbuf.html
> [1] https://www.kernel.org/doc/html/latest/media/uapi/v4l/userp.html
next prev parent reply other threads:[~2019-04-01 16:13 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-20 14:51 [PATCH v13 00/20] arm64: untag user pointers passed to the kernel Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 01/20] uaccess: add untagged_addr definition for other arches Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 02/20] arm64: untag user pointers in access_ok and __uaccess_mask_ptr Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 03/20] lib, arm64: untag user pointers in strn*_user Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 04/20] mm, arm64: untag user pointers passed to memory syscalls Andrey Konovalov
2019-03-22 11:43 ` Catalin Marinas
2019-03-28 18:10 ` Andrey Konovalov
2019-03-28 18:19 ` Steven Rostedt
2019-03-29 10:30 ` Catalin Marinas
2019-04-02 12:47 ` Andrey Konovalov
2019-04-11 16:40 ` Andrey Konovalov
2019-04-26 14:17 ` Catalin Marinas
2019-04-29 14:22 ` Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 05/20] mm, arm64: untag user pointers in mm/gup.c Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 06/20] mm, arm64: untag user pointers in get_vaddr_frames Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 07/20] fs, arm64: untag user pointers in copy_mount_options Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 08/20] fs, arm64: untag user pointers in fs/userfaultfd.c Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 09/20] net, arm64: untag user pointers in tcp_zerocopy_receive Andrey Konovalov
2019-03-22 12:04 ` Catalin Marinas
2019-03-25 13:54 ` Kevin Brodsky
2019-04-01 16:04 ` Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 10/20] kernel, arm64: untag user pointers in prctl_set_mm* Andrey Konovalov
2019-03-21 17:52 ` Kevin Brodsky
2019-03-22 15:41 ` Catalin Marinas
2019-04-01 16:44 ` Andrey Konovalov
2019-04-11 16:40 ` Andrey Konovalov
2019-04-26 14:50 ` Catalin Marinas
2019-04-29 14:23 ` Andrey Konovalov
2019-05-01 14:43 ` Vincenzo Frascino
2019-03-20 14:51 ` [PATCH v13 11/20] tracing, arm64: untag user pointers in seq_print_user_ip Andrey Konovalov
2019-03-22 15:45 ` Catalin Marinas
2019-04-01 15:38 ` Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 12/20] uprobes, arm64: untag user pointers in find_active_uprobe Andrey Konovalov
2019-03-22 15:46 ` Catalin Marinas
2019-03-20 14:51 ` [PATCH v13 13/20] bpf, arm64: untag user pointers in stack_map_get_build_id_offset Andrey Konovalov
2019-03-22 15:52 ` Catalin Marinas
2019-04-01 16:00 ` Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 14/20] drm/amdgpu, arm64: untag user pointers in amdgpu_ttm_tt_get_user_pages Andrey Konovalov
2019-03-22 15:59 ` Catalin Marinas
2019-03-25 14:02 ` Kevin Brodsky
2019-03-25 22:21 ` Kuehling, Felix
2019-04-02 14:37 ` Andrey Konovalov
2019-04-02 17:52 ` Kuehling, Felix
2019-03-20 14:51 ` [PATCH v13 15/20] drm/radeon, arm64: untag user pointers in radeon_ttm_tt_pin_userptr Andrey Konovalov
2019-03-22 16:00 ` Catalin Marinas
2019-04-02 14:17 ` Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 16/20] IB/mlx4, arm64: untag user pointers in mlx4_get_umem_mr Andrey Konovalov
2019-04-29 18:09 ` Leon Romanovsky
2019-04-30 11:16 ` Catalin Marinas
2019-04-30 12:03 ` Leon Romanovsky
2019-05-02 18:44 ` Jason Gunthorpe
2019-05-03 16:28 ` Catalin Marinas
2019-05-03 23:52 ` Jason Gunthorpe
2019-03-20 14:51 ` [PATCH v13 17/20] media/v4l2-core, arm64: untag user pointers in videobuf_dma_contig_user_get Andrey Konovalov
2019-03-22 16:07 ` Catalin Marinas
2019-03-25 14:08 ` Kevin Brodsky
2019-04-01 16:13 ` Andrey Konovalov [this message]
2019-03-20 14:51 ` [PATCH v13 18/20] tee/optee, arm64: untag user pointers in check_mem_type Andrey Konovalov
2019-03-22 16:22 ` Catalin Marinas
2019-04-01 16:31 ` Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 19/20] vfio/type1, arm64: untag user pointers in vaddr_get_pfn Andrey Konovalov
2019-03-20 14:51 ` [PATCH v13 20/20] selftests, arm64: add a selftest for passing tagged pointers to kernel Andrey Konovalov
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='CAAeHK+wiGbDtJ3d3um=OQ3VBt1tfu0f2uZ73UfDUfvNFjqPGfw@mail.gmail.com' \
--to=andreyknvl@google.com \
--cc=Dave.Martin@arm.com \
--cc=David1.Zhou@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=acme@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=alex.williamson@redhat.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=catalin.marinas@arm.com \
--cc=christian.koenig@amd.com \
--cc=cpandya@codeaurora.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=dri-devel@lists.freedesktop.org \
--cc=dvyukov@google.com \
--cc=edumazet@google.com \
--cc=eugenis@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=jens.wiklander@linaro.org \
--cc=kcc@google.com \
--cc=keescook@chromium.org \
--cc=kevin.brodsky@arm.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=kstewart@linuxfoundation.org \
--cc=kvm@vger.kernel.org \
--cc=linux-arch@vger.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=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=robin.murphy@arm.com \
--cc=rostedt@goodmis.org \
--cc=shuah@kernel.org \
--cc=vincenzo.frascino@arm.com \
--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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).