Message ID | ea0ff94ef2b8af12ea6c222c5ebd970e0849b6dd.1561386715.git.andreyknvl@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: untag user pointers passed to the kernel | expand |
On Mon, Jul 15, 2019 at 8:05 PM Jason Gunthorpe <jgg@ziepe.ca> wrote: > > On Mon, Jul 15, 2019 at 06:01:29PM +0200, Andrey Konovalov wrote: > > On Mon, Jun 24, 2019 at 7:40 PM Catalin Marinas <catalin.marinas@arm.com> wrote: > > > > > > On Mon, Jun 24, 2019 at 04:32:56PM +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. > > > > > > > > mlx4_get_umem_mr() uses provided user pointers for vma lookups, which can > > > > only by done with untagged pointers. > > > > > > > > Untag user pointers in this function. > > > > > > > > Signed-off-by: Andrey Konovalov <andreyknvl@google.com> > > > > drivers/infiniband/hw/mlx4/mr.c | 7 ++++--- > > > > 1 file changed, 4 insertions(+), 3 deletions(-) > > > > > > Acked-by: Catalin Marinas <catalin.marinas@arm.com> > > > > > > This patch also needs an ack from the infiniband maintainers (Jason). > > > > Hi Jason, > > > > Could you take a look and give your acked-by? > > Oh, I think I did this a long time ago. Still looks OK. Hm, maybe that was we who lost it. Thanks! > You will send it? I will resend the patchset once the merge window is closed, if that's what you mean. > > Reviewed-by: Jason Gunthorpe <jgg@mellanox.com> > > Jason
On Tue, Jul 16, 2019 at 12:42:07PM +0200, Andrey Konovalov wrote: > On Mon, Jul 15, 2019 at 8:05 PM Jason Gunthorpe <jgg@ziepe.ca> wrote: > > > > On Mon, Jul 15, 2019 at 06:01:29PM +0200, Andrey Konovalov wrote: > > > On Mon, Jun 24, 2019 at 7:40 PM Catalin Marinas <catalin.marinas@arm.com> wrote: > > > > > > > > On Mon, Jun 24, 2019 at 04:32:56PM +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. > > > > > > > > > > mlx4_get_umem_mr() uses provided user pointers for vma lookups, which can > > > > > only by done with untagged pointers. > > > > > > > > > > Untag user pointers in this function. > > > > > > > > > > Signed-off-by: Andrey Konovalov <andreyknvl@google.com> > > > > > drivers/infiniband/hw/mlx4/mr.c | 7 ++++--- > > > > > 1 file changed, 4 insertions(+), 3 deletions(-) > > > > > > > > Acked-by: Catalin Marinas <catalin.marinas@arm.com> > > > > > > > > This patch also needs an ack from the infiniband maintainers (Jason). > > > > > > Hi Jason, > > > > > > Could you take a look and give your acked-by? > > > > Oh, I think I did this a long time ago. Still looks OK. > > Hm, maybe that was we who lost it. Thanks! > > > You will send it? > > I will resend the patchset once the merge window is closed, if that's > what you mean. No.. I mean who send it to Linus's tree? ie do you want me to take this patch into rdma? Jason
diff --git a/drivers/infiniband/hw/mlx4/mr.c b/drivers/infiniband/hw/mlx4/mr.c index 355205a28544..13d9f917f249 100644 --- a/drivers/infiniband/hw/mlx4/mr.c +++ b/drivers/infiniband/hw/mlx4/mr.c @@ -378,6 +378,7 @@ static struct ib_umem *mlx4_get_umem_mr(struct ib_udata *udata, u64 start, * again */ if (!ib_access_writable(access_flags)) { + unsigned long untagged_start = untagged_addr(start); struct vm_area_struct *vma; down_read(¤t->mm->mmap_sem); @@ -386,9 +387,9 @@ static struct ib_umem *mlx4_get_umem_mr(struct ib_udata *udata, u64 start, * cover the memory, but for now it requires a single vma to * entirely cover the MR to support RO mappings. */ - vma = find_vma(current->mm, start); - if (vma && vma->vm_end >= start + length && - vma->vm_start <= start) { + vma = find_vma(current->mm, untagged_start); + if (vma && vma->vm_end >= untagged_start + length && + vma->vm_start <= untagged_start) { if (vma->vm_flags & VM_WRITE) access_flags |= IB_ACCESS_LOCAL_WRITE; } else {
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. mlx4_get_umem_mr() uses provided user pointers for vma lookups, which can only by done with untagged pointers. Untag user pointers in this function. Signed-off-by: Andrey Konovalov <andreyknvl@google.com> --- drivers/infiniband/hw/mlx4/mr.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)