From: Jason Gunthorpe <jgg@ziepe.ca>
To: Andrey Konovalov <andreyknvl@google.com>
Cc: 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,
Catalin Marinas <catalin.marinas@arm.com>,
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>
Subject: Re: [PATCH v16 12/16] IB, arm64: untag user pointers in ib_uverbs_(re)reg_mr()
Date: Mon, 3 Jun 2019 14:46:19 -0300 [thread overview]
Message-ID: <20190603174619.GC11474@ziepe.ca> (raw)
In-Reply-To: <c829f93b19ad6af1b13be8935ce29baa8e58518f.1559580831.git.andreyknvl@google.com>
On Mon, Jun 03, 2019 at 06:55:14PM +0200, 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.
>
> ib_uverbs_(re)reg_mr() use provided user pointers for vma lookups (through
> e.g. mlx4_get_umem_mr()), which can only by done with untagged pointers.
>
> Untag user pointers in these functions.
>
> Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
> drivers/infiniband/core/uverbs_cmd.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
> index 5a3a1780ceea..f88ee733e617 100644
> +++ b/drivers/infiniband/core/uverbs_cmd.c
> @@ -709,6 +709,8 @@ static int ib_uverbs_reg_mr(struct uverbs_attr_bundle *attrs)
> if (ret)
> return ret;
>
> + cmd.start = untagged_addr(cmd.start);
> +
> if ((cmd.start & ~PAGE_MASK) != (cmd.hca_va & ~PAGE_MASK))
> return -EINVAL;
I feel like we shouldn't thave to do this here, surely the cmd.start
should flow unmodified to get_user_pages, and gup should untag it?
ie, this sort of direction for the IB code (this would be a giant
patch, so I didn't have time to write it all, but I think it is much
saner):
diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
index 54628ef879f0ce..7b3b736c87c253 100644
--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -193,7 +193,7 @@ EXPORT_SYMBOL(ib_umem_find_best_pgsz);
* @access: IB_ACCESS_xxx flags for memory being pinned
* @dmasync: flush in-flight DMA when the memory region is written
*/
-struct ib_umem *ib_umem_get(struct ib_udata *udata, unsigned long addr,
+struct ib_umem *ib_umem_get(struct ib_udata *udata, void __user *addr,
size_t size, int access, int dmasync)
{
struct ib_ucontext *context;
@@ -201,7 +201,7 @@ struct ib_umem *ib_umem_get(struct ib_udata *udata, unsigned long addr,
struct page **page_list;
unsigned long lock_limit;
unsigned long new_pinned;
- unsigned long cur_base;
+ void __user *cur_base;
struct mm_struct *mm;
unsigned long npages;
int ret;
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
index 5a3a1780ceea4d..94389e7f12371f 100644
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -735,7 +735,8 @@ static int ib_uverbs_reg_mr(struct uverbs_attr_bundle *attrs)
}
}
- mr = pd->device->ops.reg_user_mr(pd, cmd.start, cmd.length, cmd.hca_va,
+ mr = pd->device->ops.reg_user_mr(pd, u64_to_user_ptr(cmd.start),
+ cmd.length, cmd.hca_va,
cmd.access_flags,
&attrs->driver_udata);
if (IS_ERR(mr)) {
diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
index 4d033796dcfcc2..bddbb952082fc5 100644
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -786,7 +786,7 @@ static int mr_cache_max_order(struct mlx5_ib_dev *dev)
}
static int mr_umem_get(struct mlx5_ib_dev *dev, struct ib_udata *udata,
- u64 start, u64 length, int access_flags,
+ void __user *start, u64 length, int access_flags,
struct ib_umem **umem, int *npages, int *page_shift,
int *ncont, int *order)
{
@@ -1262,8 +1262,8 @@ struct ib_mr *mlx5_ib_reg_dm_mr(struct ib_pd *pd, struct ib_dm *dm,
attr->access_flags, mode);
}
-struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
- u64 virt_addr, int access_flags,
+struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, void __user *start,
+ u64 length, u64 virt_addr, int access_flags,
struct ib_udata *udata)
{
struct mlx5_ib_dev *dev = to_mdev(pd->device);
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index ec6446864b08e9..b3c8eaaa35c760 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -2464,8 +2464,8 @@ struct ib_device_ops {
struct ib_mr *(*reg_user_mr)(struct ib_pd *pd, u64 start, u64 length,
u64 virt_addr, int mr_access_flags,
struct ib_udata *udata);
- int (*rereg_user_mr)(struct ib_mr *mr, int flags, u64 start, u64 length,
- u64 virt_addr, int mr_access_flags,
+ int (*rereg_user_mr)(struct ib_mr *mr, int flags, void __user *start,
+ u64 length, u64 virt_addr, int mr_access_flags,
struct ib_pd *pd, struct ib_udata *udata);
int (*dereg_mr)(struct ib_mr *mr, struct ib_udata *udata);
struct ib_mr *(*alloc_mr)(struct ib_pd *pd, enum ib_mr_type mr_type,
WARNING: multiple messages have this Message-ID (diff)
From: jgg at ziepe.ca (Jason Gunthorpe)
Subject: [PATCH v16 12/16] IB, arm64: untag user pointers in ib_uverbs_(re)reg_mr()
Date: Mon, 3 Jun 2019 14:46:19 -0300 [thread overview]
Message-ID: <20190603174619.GC11474@ziepe.ca> (raw)
In-Reply-To: <c829f93b19ad6af1b13be8935ce29baa8e58518f.1559580831.git.andreyknvl@google.com>
On Mon, Jun 03, 2019 at 06:55:14PM +0200, 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.
>
> ib_uverbs_(re)reg_mr() use provided user pointers for vma lookups (through
> e.g. mlx4_get_umem_mr()), which can only by done with untagged pointers.
>
> Untag user pointers in these functions.
>
> Signed-off-by: Andrey Konovalov <andreyknvl at google.com>
> drivers/infiniband/core/uverbs_cmd.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
> index 5a3a1780ceea..f88ee733e617 100644
> +++ b/drivers/infiniband/core/uverbs_cmd.c
> @@ -709,6 +709,8 @@ static int ib_uverbs_reg_mr(struct uverbs_attr_bundle *attrs)
> if (ret)
> return ret;
>
> + cmd.start = untagged_addr(cmd.start);
> +
> if ((cmd.start & ~PAGE_MASK) != (cmd.hca_va & ~PAGE_MASK))
> return -EINVAL;
I feel like we shouldn't thave to do this here, surely the cmd.start
should flow unmodified to get_user_pages, and gup should untag it?
ie, this sort of direction for the IB code (this would be a giant
patch, so I didn't have time to write it all, but I think it is much
saner):
diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
index 54628ef879f0ce..7b3b736c87c253 100644
--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -193,7 +193,7 @@ EXPORT_SYMBOL(ib_umem_find_best_pgsz);
* @access: IB_ACCESS_xxx flags for memory being pinned
* @dmasync: flush in-flight DMA when the memory region is written
*/
-struct ib_umem *ib_umem_get(struct ib_udata *udata, unsigned long addr,
+struct ib_umem *ib_umem_get(struct ib_udata *udata, void __user *addr,
size_t size, int access, int dmasync)
{
struct ib_ucontext *context;
@@ -201,7 +201,7 @@ struct ib_umem *ib_umem_get(struct ib_udata *udata, unsigned long addr,
struct page **page_list;
unsigned long lock_limit;
unsigned long new_pinned;
- unsigned long cur_base;
+ void __user *cur_base;
struct mm_struct *mm;
unsigned long npages;
int ret;
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
index 5a3a1780ceea4d..94389e7f12371f 100644
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -735,7 +735,8 @@ static int ib_uverbs_reg_mr(struct uverbs_attr_bundle *attrs)
}
}
- mr = pd->device->ops.reg_user_mr(pd, cmd.start, cmd.length, cmd.hca_va,
+ mr = pd->device->ops.reg_user_mr(pd, u64_to_user_ptr(cmd.start),
+ cmd.length, cmd.hca_va,
cmd.access_flags,
&attrs->driver_udata);
if (IS_ERR(mr)) {
diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
index 4d033796dcfcc2..bddbb952082fc5 100644
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -786,7 +786,7 @@ static int mr_cache_max_order(struct mlx5_ib_dev *dev)
}
static int mr_umem_get(struct mlx5_ib_dev *dev, struct ib_udata *udata,
- u64 start, u64 length, int access_flags,
+ void __user *start, u64 length, int access_flags,
struct ib_umem **umem, int *npages, int *page_shift,
int *ncont, int *order)
{
@@ -1262,8 +1262,8 @@ struct ib_mr *mlx5_ib_reg_dm_mr(struct ib_pd *pd, struct ib_dm *dm,
attr->access_flags, mode);
}
-struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
- u64 virt_addr, int access_flags,
+struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, void __user *start,
+ u64 length, u64 virt_addr, int access_flags,
struct ib_udata *udata)
{
struct mlx5_ib_dev *dev = to_mdev(pd->device);
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index ec6446864b08e9..b3c8eaaa35c760 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -2464,8 +2464,8 @@ struct ib_device_ops {
struct ib_mr *(*reg_user_mr)(struct ib_pd *pd, u64 start, u64 length,
u64 virt_addr, int mr_access_flags,
struct ib_udata *udata);
- int (*rereg_user_mr)(struct ib_mr *mr, int flags, u64 start, u64 length,
- u64 virt_addr, int mr_access_flags,
+ int (*rereg_user_mr)(struct ib_mr *mr, int flags, void __user *start,
+ u64 length, u64 virt_addr, int mr_access_flags,
struct ib_pd *pd, struct ib_udata *udata);
int (*dereg_mr)(struct ib_mr *mr, struct ib_udata *udata);
struct ib_mr *(*alloc_mr)(struct ib_pd *pd, enum ib_mr_type mr_type,
WARNING: multiple messages have this Message-ID (diff)
From: jgg@ziepe.ca (Jason Gunthorpe)
Subject: [PATCH v16 12/16] IB, arm64: untag user pointers in ib_uverbs_(re)reg_mr()
Date: Mon, 3 Jun 2019 14:46:19 -0300 [thread overview]
Message-ID: <20190603174619.GC11474@ziepe.ca> (raw)
Message-ID: <20190603174619.vfGNGvPZV4Fx8uDllGkLP3hXp4MSZEFZt2az4KpObdw@z> (raw)
In-Reply-To: <c829f93b19ad6af1b13be8935ce29baa8e58518f.1559580831.git.andreyknvl@google.com>
On Mon, Jun 03, 2019@06:55:14PM +0200, 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.
>
> ib_uverbs_(re)reg_mr() use provided user pointers for vma lookups (through
> e.g. mlx4_get_umem_mr()), which can only by done with untagged pointers.
>
> Untag user pointers in these functions.
>
> Signed-off-by: Andrey Konovalov <andreyknvl at google.com>
> drivers/infiniband/core/uverbs_cmd.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
> index 5a3a1780ceea..f88ee733e617 100644
> +++ b/drivers/infiniband/core/uverbs_cmd.c
> @@ -709,6 +709,8 @@ static int ib_uverbs_reg_mr(struct uverbs_attr_bundle *attrs)
> if (ret)
> return ret;
>
> + cmd.start = untagged_addr(cmd.start);
> +
> if ((cmd.start & ~PAGE_MASK) != (cmd.hca_va & ~PAGE_MASK))
> return -EINVAL;
I feel like we shouldn't thave to do this here, surely the cmd.start
should flow unmodified to get_user_pages, and gup should untag it?
ie, this sort of direction for the IB code (this would be a giant
patch, so I didn't have time to write it all, but I think it is much
saner):
diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
index 54628ef879f0ce..7b3b736c87c253 100644
--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -193,7 +193,7 @@ EXPORT_SYMBOL(ib_umem_find_best_pgsz);
* @access: IB_ACCESS_xxx flags for memory being pinned
* @dmasync: flush in-flight DMA when the memory region is written
*/
-struct ib_umem *ib_umem_get(struct ib_udata *udata, unsigned long addr,
+struct ib_umem *ib_umem_get(struct ib_udata *udata, void __user *addr,
size_t size, int access, int dmasync)
{
struct ib_ucontext *context;
@@ -201,7 +201,7 @@ struct ib_umem *ib_umem_get(struct ib_udata *udata, unsigned long addr,
struct page **page_list;
unsigned long lock_limit;
unsigned long new_pinned;
- unsigned long cur_base;
+ void __user *cur_base;
struct mm_struct *mm;
unsigned long npages;
int ret;
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
index 5a3a1780ceea4d..94389e7f12371f 100644
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -735,7 +735,8 @@ static int ib_uverbs_reg_mr(struct uverbs_attr_bundle *attrs)
}
}
- mr = pd->device->ops.reg_user_mr(pd, cmd.start, cmd.length, cmd.hca_va,
+ mr = pd->device->ops.reg_user_mr(pd, u64_to_user_ptr(cmd.start),
+ cmd.length, cmd.hca_va,
cmd.access_flags,
&attrs->driver_udata);
if (IS_ERR(mr)) {
diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
index 4d033796dcfcc2..bddbb952082fc5 100644
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -786,7 +786,7 @@ static int mr_cache_max_order(struct mlx5_ib_dev *dev)
}
static int mr_umem_get(struct mlx5_ib_dev *dev, struct ib_udata *udata,
- u64 start, u64 length, int access_flags,
+ void __user *start, u64 length, int access_flags,
struct ib_umem **umem, int *npages, int *page_shift,
int *ncont, int *order)
{
@@ -1262,8 +1262,8 @@ struct ib_mr *mlx5_ib_reg_dm_mr(struct ib_pd *pd, struct ib_dm *dm,
attr->access_flags, mode);
}
-struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
- u64 virt_addr, int access_flags,
+struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, void __user *start,
+ u64 length, u64 virt_addr, int access_flags,
struct ib_udata *udata)
{
struct mlx5_ib_dev *dev = to_mdev(pd->device);
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index ec6446864b08e9..b3c8eaaa35c760 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -2464,8 +2464,8 @@ struct ib_device_ops {
struct ib_mr *(*reg_user_mr)(struct ib_pd *pd, u64 start, u64 length,
u64 virt_addr, int mr_access_flags,
struct ib_udata *udata);
- int (*rereg_user_mr)(struct ib_mr *mr, int flags, u64 start, u64 length,
- u64 virt_addr, int mr_access_flags,
+ int (*rereg_user_mr)(struct ib_mr *mr, int flags, void __user *start,
+ u64 length, u64 virt_addr, int mr_access_flags,
struct ib_pd *pd, struct ib_udata *udata);
int (*dereg_mr)(struct ib_mr *mr, struct ib_udata *udata);
struct ib_mr *(*alloc_mr)(struct ib_pd *pd, enum ib_mr_type mr_type,
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@ziepe.ca>
To: Andrey Konovalov <andreyknvl@google.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
kvm@vger.kernel.org, Szabolcs Nagy <Szabolcs.Nagy@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
dri-devel@lists.freedesktop.org, linux-mm@kvack.org,
Khalid Aziz <khalid.aziz@oracle.com>,
linux-kselftest@vger.kernel.org,
Felix Kuehling <Felix.Kuehling@amd.com>,
Vincenzo Frascino <vincenzo.frascino@arm.com>,
Jacob Bramley <Jacob.Bramley@arm.com>,
Leon Romanovsky <leon@kernel.org>,
linux-rdma@vger.kernel.org, amd-gfx@lists.freedesktop.org,
Christoph Hellwig <hch@infradead.org>,
Dmitry Vyukov <dvyukov@google.com>,
Dave Martin <Dave.Martin@arm.com>,
Evgeniy Stepanov <eugenis@google.com>,
linux-media@vger.kernel.org,
Kevin Brodsky <kevin.brodsky@arm.com>,
Kees Cook <keescook@chromium.org>,
Ruben Ayrapetyan <Ruben.Ayrapetyan@arm.com>,
Ramana Radhakrishnan <Ramana.Radhakrishnan@arm.com>,
Alex Williamson <alex.williamson@redhat.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
linux-arm-kernel@lists.infradead.org,
Kostya Serebryany <kcc@google.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Yishai Hadas <yishaih@mellanox.com>,
linux-kernel@vger.kernel.org,
Jens Wiklander <jens.wiklander@linaro.org>,
Lee Smith <Lee.Smith@arm.com>,
Alexander Deucher <Alexander.Deucher@amd.com>,
Andrew Morton <akpm@linux-foundation.org>, enh <enh@google.com>,
Robin Murphy <robin.murphy@arm.com>,
Christian Koenig <Christian.Koenig@amd.com>,
Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Subject: Re: [PATCH v16 12/16] IB, arm64: untag user pointers in ib_uverbs_(re)reg_mr()
Date: Mon, 3 Jun 2019 14:46:19 -0300 [thread overview]
Message-ID: <20190603174619.GC11474@ziepe.ca> (raw)
In-Reply-To: <c829f93b19ad6af1b13be8935ce29baa8e58518f.1559580831.git.andreyknvl@google.com>
On Mon, Jun 03, 2019 at 06:55:14PM +0200, 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.
>
> ib_uverbs_(re)reg_mr() use provided user pointers for vma lookups (through
> e.g. mlx4_get_umem_mr()), which can only by done with untagged pointers.
>
> Untag user pointers in these functions.
>
> Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
> drivers/infiniband/core/uverbs_cmd.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
> index 5a3a1780ceea..f88ee733e617 100644
> +++ b/drivers/infiniband/core/uverbs_cmd.c
> @@ -709,6 +709,8 @@ static int ib_uverbs_reg_mr(struct uverbs_attr_bundle *attrs)
> if (ret)
> return ret;
>
> + cmd.start = untagged_addr(cmd.start);
> +
> if ((cmd.start & ~PAGE_MASK) != (cmd.hca_va & ~PAGE_MASK))
> return -EINVAL;
I feel like we shouldn't thave to do this here, surely the cmd.start
should flow unmodified to get_user_pages, and gup should untag it?
ie, this sort of direction for the IB code (this would be a giant
patch, so I didn't have time to write it all, but I think it is much
saner):
diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
index 54628ef879f0ce..7b3b736c87c253 100644
--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -193,7 +193,7 @@ EXPORT_SYMBOL(ib_umem_find_best_pgsz);
* @access: IB_ACCESS_xxx flags for memory being pinned
* @dmasync: flush in-flight DMA when the memory region is written
*/
-struct ib_umem *ib_umem_get(struct ib_udata *udata, unsigned long addr,
+struct ib_umem *ib_umem_get(struct ib_udata *udata, void __user *addr,
size_t size, int access, int dmasync)
{
struct ib_ucontext *context;
@@ -201,7 +201,7 @@ struct ib_umem *ib_umem_get(struct ib_udata *udata, unsigned long addr,
struct page **page_list;
unsigned long lock_limit;
unsigned long new_pinned;
- unsigned long cur_base;
+ void __user *cur_base;
struct mm_struct *mm;
unsigned long npages;
int ret;
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
index 5a3a1780ceea4d..94389e7f12371f 100644
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -735,7 +735,8 @@ static int ib_uverbs_reg_mr(struct uverbs_attr_bundle *attrs)
}
}
- mr = pd->device->ops.reg_user_mr(pd, cmd.start, cmd.length, cmd.hca_va,
+ mr = pd->device->ops.reg_user_mr(pd, u64_to_user_ptr(cmd.start),
+ cmd.length, cmd.hca_va,
cmd.access_flags,
&attrs->driver_udata);
if (IS_ERR(mr)) {
diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
index 4d033796dcfcc2..bddbb952082fc5 100644
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -786,7 +786,7 @@ static int mr_cache_max_order(struct mlx5_ib_dev *dev)
}
static int mr_umem_get(struct mlx5_ib_dev *dev, struct ib_udata *udata,
- u64 start, u64 length, int access_flags,
+ void __user *start, u64 length, int access_flags,
struct ib_umem **umem, int *npages, int *page_shift,
int *ncont, int *order)
{
@@ -1262,8 +1262,8 @@ struct ib_mr *mlx5_ib_reg_dm_mr(struct ib_pd *pd, struct ib_dm *dm,
attr->access_flags, mode);
}
-struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
- u64 virt_addr, int access_flags,
+struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, void __user *start,
+ u64 length, u64 virt_addr, int access_flags,
struct ib_udata *udata)
{
struct mlx5_ib_dev *dev = to_mdev(pd->device);
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index ec6446864b08e9..b3c8eaaa35c760 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -2464,8 +2464,8 @@ struct ib_device_ops {
struct ib_mr *(*reg_user_mr)(struct ib_pd *pd, u64 start, u64 length,
u64 virt_addr, int mr_access_flags,
struct ib_udata *udata);
- int (*rereg_user_mr)(struct ib_mr *mr, int flags, u64 start, u64 length,
- u64 virt_addr, int mr_access_flags,
+ int (*rereg_user_mr)(struct ib_mr *mr, int flags, void __user *start,
+ u64 length, u64 virt_addr, int mr_access_flags,
struct ib_pd *pd, struct ib_udata *udata);
int (*dereg_mr)(struct ib_mr *mr, struct ib_udata *udata);
struct ib_mr *(*alloc_mr)(struct ib_pd *pd, enum ib_mr_type mr_type,
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@ziepe.ca>
To: Andrey Konovalov <andreyknvl@google.com>
Cc: 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,
Catalin Marinas <catalin.marinas@arm.com>,
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>,
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>
Subject: Re: [PATCH v16 12/16] IB, arm64: untag user pointers in ib_uverbs_(re)reg_mr()
Date: Mon, 3 Jun 2019 14:46:19 -0300 [thread overview]
Message-ID: <20190603174619.GC11474@ziepe.ca> (raw)
In-Reply-To: <c829f93b19ad6af1b13be8935ce29baa8e58518f.1559580831.git.andreyknvl@google.com>
On Mon, Jun 03, 2019 at 06:55:14PM +0200, 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.
>
> ib_uverbs_(re)reg_mr() use provided user pointers for vma lookups (through
> e.g. mlx4_get_umem_mr()), which can only by done with untagged pointers.
>
> Untag user pointers in these functions.
>
> Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
> drivers/infiniband/core/uverbs_cmd.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
> index 5a3a1780ceea..f88ee733e617 100644
> +++ b/drivers/infiniband/core/uverbs_cmd.c
> @@ -709,6 +709,8 @@ static int ib_uverbs_reg_mr(struct uverbs_attr_bundle *attrs)
> if (ret)
> return ret;
>
> + cmd.start = untagged_addr(cmd.start);
> +
> if ((cmd.start & ~PAGE_MASK) != (cmd.hca_va & ~PAGE_MASK))
> return -EINVAL;
I feel like we shouldn't thave to do this here, surely the cmd.start
should flow unmodified to get_user_pages, and gup should untag it?
ie, this sort of direction for the IB code (this would be a giant
patch, so I didn't have time to write it all, but I think it is much
saner):
diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
index 54628ef879f0ce..7b3b736c87c253 100644
--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -193,7 +193,7 @@ EXPORT_SYMBOL(ib_umem_find_best_pgsz);
* @access: IB_ACCESS_xxx flags for memory being pinned
* @dmasync: flush in-flight DMA when the memory region is written
*/
-struct ib_umem *ib_umem_get(struct ib_udata *udata, unsigned long addr,
+struct ib_umem *ib_umem_get(struct ib_udata *udata, void __user *addr,
size_t size, int access, int dmasync)
{
struct ib_ucontext *context;
@@ -201,7 +201,7 @@ struct ib_umem *ib_umem_get(struct ib_udata *udata, unsigned long addr,
struct page **page_list;
unsigned long lock_limit;
unsigned long new_pinned;
- unsigned long cur_base;
+ void __user *cur_base;
struct mm_struct *mm;
unsigned long npages;
int ret;
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
index 5a3a1780ceea4d..94389e7f12371f 100644
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -735,7 +735,8 @@ static int ib_uverbs_reg_mr(struct uverbs_attr_bundle *attrs)
}
}
- mr = pd->device->ops.reg_user_mr(pd, cmd.start, cmd.length, cmd.hca_va,
+ mr = pd->device->ops.reg_user_mr(pd, u64_to_user_ptr(cmd.start),
+ cmd.length, cmd.hca_va,
cmd.access_flags,
&attrs->driver_udata);
if (IS_ERR(mr)) {
diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
index 4d033796dcfcc2..bddbb952082fc5 100644
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -786,7 +786,7 @@ static int mr_cache_max_order(struct mlx5_ib_dev *dev)
}
static int mr_umem_get(struct mlx5_ib_dev *dev, struct ib_udata *udata,
- u64 start, u64 length, int access_flags,
+ void __user *start, u64 length, int access_flags,
struct ib_umem **umem, int *npages, int *page_shift,
int *ncont, int *order)
{
@@ -1262,8 +1262,8 @@ struct ib_mr *mlx5_ib_reg_dm_mr(struct ib_pd *pd, struct ib_dm *dm,
attr->access_flags, mode);
}
-struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
- u64 virt_addr, int access_flags,
+struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, void __user *start,
+ u64 length, u64 virt_addr, int access_flags,
struct ib_udata *udata)
{
struct mlx5_ib_dev *dev = to_mdev(pd->device);
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index ec6446864b08e9..b3c8eaaa35c760 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -2464,8 +2464,8 @@ struct ib_device_ops {
struct ib_mr *(*reg_user_mr)(struct ib_pd *pd, u64 start, u64 length,
u64 virt_addr, int mr_access_flags,
struct ib_udata *udata);
- int (*rereg_user_mr)(struct ib_mr *mr, int flags, u64 start, u64 length,
- u64 virt_addr, int mr_access_flags,
+ int (*rereg_user_mr)(struct ib_mr *mr, int flags, void __user *start,
+ u64 length, u64 virt_addr, int mr_access_flags,
struct ib_pd *pd, struct ib_udata *udata);
int (*dereg_mr)(struct ib_mr *mr, struct ib_udata *udata);
struct ib_mr *(*alloc_mr)(struct ib_pd *pd, enum ib_mr_type mr_type,
next prev parent reply other threads:[~2019-06-03 17:46 UTC|newest]
Thread overview: 314+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-03 16:55 [PATCH v16 00/16] arm64: untag user pointers passed to the kernel Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-03 16:55 ` [PATCH v16 01/16] uaccess: add untagged_addr definition for other arches Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-03 17:02 ` Khalid Aziz
2019-06-03 17:02 ` Khalid Aziz
2019-06-03 17:02 ` Khalid Aziz
2019-06-03 17:02 ` Khalid Aziz
2019-06-03 17:02 ` khalid.aziz
2019-06-03 17:06 ` Andrey Konovalov
2019-06-03 17:06 ` Andrey Konovalov
2019-06-03 17:06 ` Andrey Konovalov
2019-06-03 17:06 ` Andrey Konovalov
2019-06-03 17:06 ` andreyknvl
2019-06-03 17:24 ` Khalid Aziz
2019-06-03 17:24 ` Khalid Aziz
2019-06-03 17:24 ` Khalid Aziz
2019-06-03 17:24 ` Khalid Aziz
2019-06-03 17:24 ` khalid.aziz
2019-06-03 17:29 ` Christoph Hellwig
2019-06-03 17:29 ` Christoph Hellwig
2019-06-03 17:29 ` Christoph Hellwig
2019-06-03 17:29 ` Christoph Hellwig
2019-06-03 17:29 ` hch
2019-06-03 18:17 ` Khalid Aziz
2019-06-03 18:17 ` Khalid Aziz
2019-06-03 18:17 ` Khalid Aziz
2019-06-03 18:17 ` Khalid Aziz
2019-06-03 18:17 ` khalid.aziz
2019-06-04 11:45 ` Andrey Konovalov
2019-06-04 11:45 ` Andrey Konovalov
2019-06-04 11:45 ` Andrey Konovalov
2019-06-04 11:45 ` Andrey Konovalov
2019-06-04 11:45 ` andreyknvl
2019-06-03 16:55 ` [PATCH v16 02/16] arm64: untag user pointers in access_ok and __uaccess_mask_ptr Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-08 3:51 ` Kees Cook
2019-06-08 3:51 ` Kees Cook
2019-06-08 3:51 ` Kees Cook
2019-06-08 3:51 ` Kees Cook
2019-06-08 3:51 ` keescook
2019-06-10 17:53 ` Catalin Marinas
2019-06-10 17:53 ` Catalin Marinas
2019-06-10 17:53 ` Catalin Marinas
2019-06-10 17:53 ` Catalin Marinas
2019-06-10 17:53 ` catalin.marinas
2019-06-10 18:07 ` Kees Cook
2019-06-10 18:07 ` Kees Cook
2019-06-10 18:07 ` Kees Cook
2019-06-10 18:07 ` Kees Cook
2019-06-10 18:07 ` keescook
2019-06-10 18:53 ` Catalin Marinas
2019-06-10 18:53 ` Catalin Marinas
2019-06-10 18:53 ` Catalin Marinas
2019-06-10 18:53 ` Catalin Marinas
2019-06-10 18:53 ` catalin.marinas
2019-06-10 20:36 ` Kees Cook
2019-06-10 20:36 ` Kees Cook
2019-06-10 20:36 ` Kees Cook
2019-06-10 20:36 ` Kees Cook
2019-06-10 20:36 ` keescook
2019-06-11 14:57 ` Catalin Marinas
2019-06-11 14:57 ` Catalin Marinas
2019-06-11 14:57 ` Catalin Marinas
2019-06-11 17:09 ` Vincenzo Frascino
2019-06-11 17:09 ` Vincenzo Frascino
2019-06-11 17:09 ` Vincenzo Frascino
2019-06-12 9:32 ` Catalin Marinas
2019-06-12 9:32 ` Catalin Marinas
2019-06-12 9:32 ` Catalin Marinas
2019-06-12 11:52 ` Vincenzo Frascino
2019-06-12 11:52 ` Vincenzo Frascino
2019-06-12 11:52 ` Vincenzo Frascino
2019-06-11 17:09 ` Andrey Konovalov
2019-06-11 17:09 ` Andrey Konovalov
2019-06-11 17:09 ` Andrey Konovalov
2019-06-11 17:39 ` Catalin Marinas
2019-06-11 17:39 ` Catalin Marinas
2019-06-11 17:39 ` Catalin Marinas
2019-06-12 11:03 ` Andrey Konovalov
2019-06-12 11:03 ` Andrey Konovalov
2019-06-12 11:03 ` Andrey Konovalov
2019-06-12 11:04 ` Catalin Marinas
2019-06-12 11:04 ` Catalin Marinas
2019-06-12 11:04 ` Catalin Marinas
2019-06-03 16:55 ` [PATCH v16 03/16] lib, arm64: untag user pointers in strn*_user Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-08 3:48 ` Kees Cook
2019-06-08 3:48 ` Kees Cook
2019-06-08 3:48 ` Kees Cook
2019-06-08 3:48 ` Kees Cook
2019-06-08 3:48 ` keescook
2019-06-11 20:06 ` Khalid Aziz
2019-06-11 20:06 ` Khalid Aziz
2019-06-11 20:06 ` Khalid Aziz
2019-06-03 16:55 ` [PATCH v16 04/16] mm: untag user pointers in do_pages_move Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-08 3:49 ` Kees Cook
2019-06-08 3:49 ` Kees Cook
2019-06-08 3:49 ` Kees Cook
2019-06-08 3:49 ` Kees Cook
2019-06-08 3:49 ` keescook
2019-06-11 20:18 ` Khalid Aziz
2019-06-11 20:18 ` Khalid Aziz
2019-06-11 20:18 ` Khalid Aziz
2019-06-12 11:08 ` Andrey Konovalov
2019-06-12 11:08 ` Andrey Konovalov
2019-06-12 11:08 ` Andrey Konovalov
2019-06-03 16:55 ` [PATCH v16 05/16] arm64: untag user pointers passed to memory syscalls Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-08 3:51 ` Kees Cook
2019-06-08 3:51 ` Kees Cook
2019-06-08 3:51 ` Kees Cook
2019-06-08 3:51 ` Kees Cook
2019-06-08 3:51 ` keescook
2019-06-10 14:28 ` Catalin Marinas
2019-06-10 14:28 ` Catalin Marinas
2019-06-10 14:28 ` Catalin Marinas
2019-06-10 14:28 ` Catalin Marinas
2019-06-10 14:28 ` catalin.marinas
2019-06-11 15:35 ` Andrey Konovalov
2019-06-11 15:35 ` Andrey Konovalov
2019-06-11 15:35 ` Andrey Konovalov
2019-06-11 17:44 ` Catalin Marinas
2019-06-11 17:44 ` Catalin Marinas
2019-06-11 17:44 ` Catalin Marinas
2019-06-12 11:13 ` Andrey Konovalov
2019-06-12 11:13 ` Andrey Konovalov
2019-06-12 11:13 ` Andrey Konovalov
2019-06-03 16:55 ` [PATCH v16 06/16] mm, arm64: untag user pointers in mm/gup.c Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-08 3:59 ` Kees Cook
2019-06-08 3:59 ` Kees Cook
2019-06-08 3:59 ` Kees Cook
2019-06-08 3:59 ` Kees Cook
2019-06-08 3:59 ` keescook
2019-06-03 16:55 ` [PATCH v16 07/16] mm, arm64: untag user pointers in get_vaddr_frames Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-08 4:00 ` Kees Cook
2019-06-08 4:00 ` Kees Cook
2019-06-08 4:00 ` Kees Cook
2019-06-08 4:00 ` Kees Cook
2019-06-08 4:00 ` keescook
2019-06-10 14:29 ` Catalin Marinas
2019-06-10 14:29 ` Catalin Marinas
2019-06-10 14:29 ` Catalin Marinas
2019-06-10 14:29 ` Catalin Marinas
2019-06-10 14:29 ` catalin.marinas
2019-06-03 16:55 ` [PATCH v16 08/16] fs, arm64: untag user pointers in copy_mount_options Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-08 4:02 ` Kees Cook
2019-06-08 4:02 ` Kees Cook
2019-06-08 4:02 ` Kees Cook
2019-06-08 4:02 ` Kees Cook
2019-06-08 4:02 ` keescook
2019-06-11 14:38 ` Andrey Konovalov
2019-06-11 14:38 ` Andrey Konovalov
2019-06-11 14:38 ` Andrey Konovalov
2019-06-12 11:36 ` Andrey Konovalov
2019-06-12 11:36 ` Andrey Konovalov
2019-06-12 11:36 ` Andrey Konovalov
2019-06-03 16:55 ` [PATCH v16 09/16] fs, arm64: untag user pointers in fs/userfaultfd.c Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-08 4:03 ` Kees Cook
2019-06-08 4:03 ` Kees Cook
2019-06-08 4:03 ` Kees Cook
2019-06-08 4:03 ` Kees Cook
2019-06-08 4:03 ` keescook
2019-06-12 10:45 ` Catalin Marinas
2019-06-12 10:45 ` Catalin Marinas
2019-06-12 10:45 ` Catalin Marinas
2019-06-03 16:55 ` [PATCH v16 10/16] drm/amdgpu, arm64: untag user pointers Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-03 16:55 ` [PATCH v16 11/16] drm/radeon, arm64: untag user pointers in radeon_gem_userptr_ioctl Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-03 16:55 ` [PATCH v16 12/16] IB, arm64: untag user pointers in ib_uverbs_(re)reg_mr() Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-03 17:46 ` Jason Gunthorpe [this message]
2019-06-03 17:46 ` Jason Gunthorpe
2019-06-03 17:46 ` Jason Gunthorpe
2019-06-03 17:46 ` Jason Gunthorpe
2019-06-03 17:46 ` jgg
2019-06-04 12:18 ` Andrey Konovalov
2019-06-04 12:18 ` Andrey Konovalov
2019-06-04 12:18 ` Andrey Konovalov
2019-06-04 12:18 ` Andrey Konovalov
2019-06-04 12:18 ` andreyknvl
2019-06-04 12:27 ` Jason Gunthorpe
2019-06-04 12:27 ` Jason Gunthorpe
2019-06-04 12:27 ` Jason Gunthorpe
2019-06-04 12:27 ` Jason Gunthorpe
2019-06-04 12:27 ` jgg
2019-06-04 12:45 ` Andrey Konovalov
2019-06-04 12:45 ` Andrey Konovalov
2019-06-04 12:45 ` Andrey Konovalov
2019-06-04 12:45 ` Andrey Konovalov
2019-06-04 12:45 ` andreyknvl
2019-06-04 13:02 ` Jason Gunthorpe
2019-06-04 13:02 ` Jason Gunthorpe
2019-06-04 13:02 ` Jason Gunthorpe
2019-06-04 13:02 ` Jason Gunthorpe
2019-06-04 13:02 ` jgg
2019-06-04 13:09 ` Andrey Konovalov
2019-06-04 13:09 ` Andrey Konovalov
2019-06-04 13:09 ` Andrey Konovalov
2019-06-04 13:09 ` Andrey Konovalov
2019-06-04 13:09 ` andreyknvl
2019-06-12 11:01 ` Catalin Marinas
2019-06-12 11:01 ` Catalin Marinas
2019-06-12 11:01 ` Catalin Marinas
2019-06-03 16:55 ` [PATCH v16 13/16] media/v4l2-core, arm64: untag user pointers in videobuf_dma_contig_user_get Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-08 3:52 ` Kees Cook
2019-06-08 3:52 ` Kees Cook
2019-06-08 3:52 ` Kees Cook
2019-06-08 3:52 ` Kees Cook
2019-06-08 3:52 ` keescook
2019-06-03 16:55 ` [PATCH v16 14/16] tee, arm64: untag user pointers in tee_shm_register Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-07 5:33 ` Jens Wiklander
2019-06-07 5:33 ` Jens Wiklander
2019-06-07 5:33 ` Jens Wiklander
2019-06-07 5:33 ` Jens Wiklander
2019-06-07 5:33 ` jens.wiklander
2019-06-08 4:05 ` Kees Cook
2019-06-08 4:05 ` Kees Cook
2019-06-08 4:05 ` Kees Cook
2019-06-08 4:05 ` Kees Cook
2019-06-08 4:05 ` keescook
2019-06-03 16:55 ` [PATCH v16 15/16] vfio/type1, arm64: untag user pointers in vaddr_get_pfn Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-08 3:58 ` Kees Cook
2019-06-08 3:58 ` Kees Cook
2019-06-08 3:58 ` Kees Cook
2019-06-08 3:58 ` Kees Cook
2019-06-08 3:58 ` keescook
2019-06-12 10:38 ` Catalin Marinas
2019-06-12 10:38 ` Catalin Marinas
2019-06-12 10:38 ` Catalin Marinas
2019-06-03 16:55 ` [PATCH v16 16/16] selftests, arm64: add a selftest for passing tagged pointers to kernel Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` Andrey Konovalov
2019-06-03 16:55 ` andreyknvl
2019-06-08 3:56 ` Kees Cook
2019-06-08 3:56 ` Kees Cook
2019-06-08 3:56 ` Kees Cook
2019-06-08 3:56 ` Kees Cook
2019-06-08 3:56 ` keescook
2019-06-10 22:08 ` shuah
2019-06-10 22:08 ` shuah
2019-06-10 22:08 ` shuah
2019-06-10 22:08 ` shuah
2019-06-10 22:08 ` shuah
2019-06-11 15:01 ` Catalin Marinas
2019-06-11 15:01 ` Catalin Marinas
2019-06-11 15:01 ` Catalin Marinas
2019-06-11 17:18 ` Andrey Konovalov
2019-06-11 17:18 ` Andrey Konovalov
2019-06-11 17:18 ` Andrey Konovalov
2019-06-11 17:50 ` Catalin Marinas
2019-06-11 17:50 ` Catalin Marinas
2019-06-11 17:50 ` Catalin Marinas
2019-06-12 11:14 ` Andrey Konovalov
2019-06-12 11:14 ` Andrey Konovalov
2019-06-12 11:14 ` 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=20190603174619.GC11474@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=Alexander.Deucher@amd.com \
--cc=Christian.Koenig@amd.com \
--cc=Felix.Kuehling@amd.com \
--cc=akpm@linux-foundation.org \
--cc=amd-gfx@lists.freedesktop.org \
--cc=andreyknvl@google.com \
--cc=catalin.marinas@arm.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gregkh@linuxfoundation.org \
--cc=keescook@chromium.org \
--cc=kvm@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=mark.rutland@arm.com \
--cc=mchehab@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.