Message ID | ea0ff94ef2b8af12ea6c222c5ebd970e0849b6dd.1561386715.git.andreyknvl@google.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | arm64: untag user pointers passed to the kernel | expand |
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> Reviewed-by: Kees Cook <keescook@chromium.org> -Kees > --- > drivers/infiniband/hw/mlx4/mr.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > 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 { > -- > 2.22.0.410.gd8fdbe21b5-goog >
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).
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? Thanks! > > -- > Catalin
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. You will send it? Reviewed-by: Jason Gunthorpe <jgg@mellanox.com> Jason
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
On Tue, Jul 16, 2019 at 2:06 PM Jason Gunthorpe <jgg@ziepe.ca> wrote: > > 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
On Tue, Jul 16, 2019 at 2:06 PM Jason Gunthorpe <jgg@ziepe.ca> wrote: > > 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? I think the plan was to merge the whole series through the mm tree. But I don't mind if you want to take this patch into your tree. It's just that this patch doesn't make much sense without the rest of the series. > > Jason
On Wed, Jul 17, 2019 at 01:44:07PM +0200, Andrey Konovalov wrote: > On Tue, Jul 16, 2019 at 2:06 PM Jason Gunthorpe <jgg@ziepe.ca> wrote: > > > > 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? > > I think the plan was to merge the whole series through the mm tree. > But I don't mind if you want to take this patch into your tree. It's > just that this patch doesn't make much sense without the rest of the > series. Generally I prefer if subsystem changes stay in subsystem trees. If the patch is good standalone, and the untag API has already been merged, this is a better strategy. Jason
On Wed, Jul 17, 2019 at 1:58 PM Jason Gunthorpe <jgg@ziepe.ca> wrote: > > On Wed, Jul 17, 2019 at 01:44:07PM +0200, Andrey Konovalov wrote: > > On Tue, Jul 16, 2019 at 2:06 PM Jason Gunthorpe <jgg@ziepe.ca> wrote: > > > > > > 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? > > > > I think the plan was to merge the whole series through the mm tree. > > But I don't mind if you want to take this patch into your tree. It's > > just that this patch doesn't make much sense without the rest of the > > series. > > Generally I prefer if subsystem changes stay in subsystem trees. If > the patch is good standalone, and the untag API has already been > merged, this is a better strategy. OK, feel free to take this into your tree, this works for me. > > 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(-)