[PATCH v13 00/20] arm64: untag user pointers passed to the kernel

2019-03-20 Thread Andrey Konovalov
of recipients. Changes in v2: - Rebased onto 2d618bdf (4.17-rc3+). - Removed excessive untagging in gup.c. - Removed untagging pointers returned from __uaccess_mask_ptr. Changes in v1: - Rebased onto 4.17-rc1. Changes in RFC v2: - Added "#ifndef untagged_addr..." fallback in linu

[PATCH v13 08/20] fs, arm64: untag user pointers in fs/userfaultfd.c

2019-03-20 Thread Andrey Konovalov
done with untagged pointers. Untag user pointers in these functions. Signed-off-by: Andrey Konovalov --- fs/userfaultfd.c | 5 + 1 file changed, 5 insertions(+) diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index 89800fc7dc9d..a3b70e0d9756 100644 --- a/fs/userfaultfd.c +++ b/fs

[PATCH v13 01/20] uaccess: add untagged_addr definition for other arches

2019-03-20 Thread Andrey Konovalov
arm64. Acked-by: Catalin Marinas Signed-off-by: Andrey Konovalov --- include/linux/mm.h | 4 1 file changed, 4 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index 76769749b5a5..4d674518d392 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -99,6 +99,10 @@ extern

[PATCH v13 02/20] arm64: untag user pointers in access_ok and __uaccess_mask_ptr

2019-03-20 Thread Andrey Konovalov
temporarily untags the pointers to perform the checks, but then passes them as is into the kernel internals. Reviewed-by: Catalin Marinas Signed-off-by: Andrey Konovalov --- arch/arm64/include/asm/uaccess.h | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/arch/arm64/include

[PATCH v13 15/20] drm/radeon, arm64: untag user pointers in radeon_ttm_tt_pin_userptr

2019-03-20 Thread Andrey Konovalov
pointers. Untag user pointers in this function. Signed-off-by: Andrey Konovalov --- drivers/gpu/drm/radeon/radeon_ttm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c index 9920a6fc11bf..872a98796117

[PATCH v13 07/20] fs, arm64: untag user pointers in copy_mount_options

2019-03-20 Thread Andrey Konovalov
size is calculated to not allow the exact_copy_from_user() call to cross TASK_SIZE boundary. However if the address is tagged, then the size will be calculated incorrectly. Untag the address before subtracting. Signed-off-by: Andrey Konovalov --- fs/namespace.c | 2 +- 1 file changed, 1

[PATCH v13 10/20] kernel, arm64: untag user pointers in prctl_set_mm*

2019-03-20 Thread Andrey Konovalov
perform validation, which can only by done with untagged pointers. Untag user pointers in these functions for vma lookup and validity checks. Signed-off-by: Andrey Konovalov --- kernel/sys.c | 44 ++-- 1 file changed, 30 insertions(+), 14 deletions

[PATCH v13 17/20] media/v4l2-core, arm64: untag user pointers in videobuf_dma_contig_user_get

2019-03-20 Thread Andrey Konovalov
pointers. Untag the pointers in this function. Signed-off-by: Andrey Konovalov --- 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

[PATCH v13 11/20] tracing, arm64: untag user pointers in seq_print_user_ip

2019-03-20 Thread Andrey Konovalov
. Untag user pointers in this function. Signed-off-by: Andrey Konovalov --- kernel/trace/trace_output.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index 54373d93e251..6376bee93c84 100644 --- a/kernel/trace

[PATCH v13 19/20] vfio/type1, arm64: untag user pointers in vaddr_get_pfn

2019-03-20 Thread Andrey Konovalov
user pointers in this function. Signed-off-by: Andrey Konovalov --- drivers/vfio/vfio_iommu_type1.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c index 73652e21efec..e556caa64f83 100644 --- a/drivers/vfio/vfio_iommu_type1.c

[PATCH v13 20/20] selftests, arm64: add a selftest for passing tagged pointers to kernel

2019-03-20 Thread Andrey Konovalov
kernel accepting tagged user pointers the test fails with EFAULT. Signed-off-by: Andrey Konovalov --- tools/testing/selftests/arm64/.gitignore | 1 + tools/testing/selftests/arm64/Makefile| 11 ++ .../testing/selftests/arm64/run_tags_test.sh | 12 +++ tools/testing

[PATCH v13 13/20] bpf, arm64: untag user pointers in stack_map_get_build_id_offset

2019-03-20 Thread Andrey Konovalov
pointers. Untag user pointers in this function for doing the lookup and calculating the offset, but save as is in the bpf_stack_build_id struct. Signed-off-by: Andrey Konovalov --- kernel/bpf/stackmap.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/bpf/stackmap.c

[PATCH v13 12/20] uprobes, arm64: untag user pointers in find_active_uprobe

2019-03-20 Thread Andrey Konovalov
done with untagged pointers. Untag user pointers in this function. Signed-off-by: Andrey Konovalov --- kernel/events/uprobes.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index c5cde87329c7..d3a2716a813a 100644 --- a/kernel/events

[PATCH v13 16/20] IB/mlx4, arm64: untag user pointers in mlx4_get_umem_mr

2019-03-20 Thread Andrey Konovalov
. Untag user pointers in this function. Signed-off-by: Andrey Konovalov --- 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 395379a480cb..9a35ed2c6a6f 100644 --- a/drivers

[PATCH v13 18/20] tee/optee, arm64: untag user pointers in check_mem_type

2019-03-20 Thread Andrey Konovalov
untagged pointers. Untag user pointers in this function. Signed-off-by: Andrey Konovalov --- drivers/tee/optee/call.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/tee/optee/call.c b/drivers/tee/optee/call.c index a5afbe6dee68..e3be20264092 100644 --- a/drivers/tee/optee/call.c

[PATCH v13 06/20] mm, arm64: untag user pointers in get_vaddr_frames

2019-03-20 Thread Andrey Konovalov
of locating and changing all callers of this function, perform untagging in it. Signed-off-by: Andrey Konovalov --- mm/frame_vector.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/frame_vector.c b/mm/frame_vector.c index c64dca6e27c2..c431ca81dad5 100644 --- a/mm/frame_vector.c +++ b

[PATCH v13 04/20] mm, arm64: untag user pointers passed to memory syscalls

2019-03-20 Thread Andrey Konovalov
, mincore, mlock, mlock2, brk, mmap_pgoff, old_mmap, munmap, remap_file_pages, mprotect, pkey_mprotect, mremap, msync and shmdt. This is done by untagging pointers passed to these syscalls in the prologues of their handlers. Signed-off-by: Andrey Konovalov --- ipc/shm.c | 2 ++ mm/madvise.c | 2

[PATCH v13 03/20] lib, arm64: untag user pointers in strn*_user

2019-03-20 Thread Andrey Konovalov
-by: Andrey Konovalov --- lib/strncpy_from_user.c | 3 ++- lib/strnlen_user.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c index 58eacd41526c..6209bb9507c7 100644 --- a/lib/strncpy_from_user.c +++ b/lib

[PATCH v13 14/20] drm/amdgpu, arm64: untag user pointers in amdgpu_ttm_tt_get_user_pages

2019-03-20 Thread Andrey Konovalov
pointers. Untag user pointers in this function. Signed-off-by: Andrey Konovalov --- drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index 73e71e61dc99

[PATCH v13 09/20] net, arm64: untag user pointers in tcp_zerocopy_receive

2019-03-20 Thread Andrey Konovalov
. Untag user pointers in this function. Signed-off-by: Andrey Konovalov --- net/ipv4/tcp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 6baa6dc1b13b..855a1f68c1ea 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -1761,6 +1761,8 @@ static int

[PATCH v13 05/20] mm, arm64: untag user pointers in mm/gup.c

2019-03-20 Thread Andrey Konovalov
get_user_pages, that is used by the futex syscall). Since a user can provided tagged addresses, we need to handle this case. Add untagging to gup.c functions that use user addresses for vma lookups. Signed-off-by: Andrey Konovalov --- mm/gup.c | 4 1 file changed, 4 insertions(+) diff --git

Re: [PATCH v13 04/20] mm, arm64: untag user pointers passed to memory syscalls

2019-03-28 Thread Andrey Konovalov
On Fri, Mar 22, 2019 at 12:44 PM Catalin Marinas wrote: > > On Wed, Mar 20, 2019 at 03:51:18PM +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 o

Re: [PATCH v13 11/20] tracing, arm64: untag user pointers in seq_print_user_ip

2019-04-01 Thread Andrey Konovalov
On Fri, Mar 22, 2019 at 4:45 PM Catalin Marinas wrote: > > On Wed, Mar 20, 2019 at 03:51:25PM +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 o

Re: [PATCH v13 17/20] media/v4l2-core, arm64: untag user pointers in videobuf_dma_contig_user_get

2019-04-01 Thread Andrey Konovalov
On Mon, Mar 25, 2019 at 3:08 PM Kevin Brodsky 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 tagg

Re: [PATCH v13 09/20] net, arm64: untag user pointers in tcp_zerocopy_receive

2019-04-01 Thread Andrey Konovalov
On Mon, Mar 25, 2019 at 2:54 PM Kevin Brodsky wrote: > > On 22/03/2019 12:04, Catalin Marinas wrote: > > On Wed, Mar 20, 2019 at 03:51:23PM +0100, Andrey Konovalov wrote: > >> This patch is a part of a series that extends arm64 kernel ABI to allow to > >> pass tagg

Re: [PATCH v13 13/20] bpf, arm64: untag user pointers in stack_map_get_build_id_offset

2019-04-01 Thread Andrey Konovalov
On Fri, Mar 22, 2019 at 4:52 PM Catalin Marinas wrote: > > On Wed, Mar 20, 2019 at 03:51:27PM +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 o

Re: [PATCH v13 18/20] tee/optee, arm64: untag user pointers in check_mem_type

2019-04-01 Thread Andrey Konovalov
On Fri, Mar 22, 2019 at 5:22 PM Catalin Marinas wrote: > > On Wed, Mar 20, 2019 at 03:51:32PM +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 o

Re: [PATCH v13 10/20] kernel, arm64: untag user pointers in prctl_set_mm*

2019-04-01 Thread Andrey Konovalov
On Fri, Mar 22, 2019 at 4:41 PM Catalin Marinas wrote: > > On Wed, Mar 20, 2019 at 03:51:24PM +0100, Andrey Konovalov wrote: > > @@ -2120,13 +2135,14 @@ static int prctl_set_mm(int opt, unsigned long addr, > > if (opt == PR_SET_MM_AUXV) > > return prctl

Re: [PATCH v13 15/20] drm/radeon, arm64: untag user pointers in radeon_ttm_tt_pin_userptr

2019-04-02 Thread Andrey Konovalov
On Fri, Mar 22, 2019 at 5:01 PM Catalin Marinas wrote: > > On Wed, Mar 20, 2019 at 03:51:29PM +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 o

Re: [PATCH v13 14/20] drm/amdgpu, arm64: untag user pointers in amdgpu_ttm_tt_get_user_pages

2019-04-02 Thread Andrey Konovalov
On Mon, Mar 25, 2019 at 11:21 PM Kuehling, Felix wrote: > > On 2019-03-20 10:51 a.m., 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 > &g

Re: [PATCH v13 10/20] kernel, arm64: untag user pointers in prctl_set_mm*

2019-04-11 Thread Andrey Konovalov
On Mon, Apr 1, 2019 at 6:44 PM Andrey Konovalov wrote: > > On Fri, Mar 22, 2019 at 4:41 PM Catalin Marinas > wrote: > > > > On Wed, Mar 20, 2019 at 03:51:24PM +0100, Andrey Konovalov wrote: > > > @@ -2120,13 +2135,14 @@ static int prctl_set_mm(int opt, unsigned lo

Re: [PATCH v13 10/20] kernel, arm64: untag user pointers in prctl_set_mm*

2019-04-29 Thread Andrey Konovalov
On Fri, Apr 26, 2019 at 4:50 PM Catalin Marinas wrote: > > On Mon, Apr 01, 2019 at 06:44:34PM +0200, Andrey Konovalov wrote: > > On Fri, Mar 22, 2019 at 4:41 PM Catalin Marinas > > wrote: > > > On Wed, Mar 20, 2019 at 03:51:24PM +0100, Andrey Konovalov wrote: &

[PATCH v14 04/17] mm: add ksys_ wrappers to memory syscalls

2019-04-30 Thread Andrey Konovalov
this series will add a custom implementation for these syscalls that makes them accept tagged pointers on arm64. Signed-off-by: Andrey Konovalov --- include/linux/syscalls.h | 22 +++ ipc/shm.c| 7 ++- mm/madvise.c | 129 ---

[PATCH v14 00/17] arm64: untag user pointers passed to the kernel

2019-04-30 Thread Andrey Konovalov
f013 (4.18-rc1+). Changes in v3: - Rebased onto e5c51f30 (4.17-rc6+). - Added linux-arch@ to the list of recipients. Changes in v2: - Rebased onto 2d618bdf (4.17-rc3+). - Removed excessive untagging in gup.c. - Removed untagging pointers returned from __uaccess_mask_ptr. Changes in v1: - Rebased o

[PATCH v14 06/17] mm: untag user pointers in do_pages_move

2019-04-30 Thread Andrey Konovalov
. Signed-off-by: Andrey Konovalov --- mm/migrate.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/migrate.c b/mm/migrate.c index 663a5449367a..c014a07135f0 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -1617,6 +1617,7 @@ static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes

[PATCH v14 17/17] selftests, arm64: add a selftest for passing tagged pointers to kernel

2019-04-30 Thread Andrey Konovalov
kernel accepting tagged user pointers the test fails with EFAULT. Signed-off-by: Andrey Konovalov --- tools/testing/selftests/arm64/.gitignore | 1 + tools/testing/selftests/arm64/Makefile| 11 ++ .../testing/selftests/arm64/run_tags_test.sh | 12 +++ tools/testing

[PATCH v14 11/17] drm/amdgpu, arm64: untag user pointers

2019-04-30 Thread Andrey Konovalov
untagged address get correctly matched up with the right BO. This patch untag user pointers in amdgpu_gem_userptr_ioctl() for the GEM case and in amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu() for the KFD case. Suggested-by: Kuehling, Felix Signed-off-by: Andrey Konovalov --- drivers/gpu/drm/amd/amdgpu

[PATCH v14 12/17] drm/radeon, arm64: untag user pointers

2019-04-30 Thread Andrey Konovalov
right BO. This patch untags user pointers in radeon_gem_userptr_ioctl(). Signed-off-by: Andrey Konovalov --- drivers/gpu/drm/radeon/radeon_gem.c | 2 ++ drivers/gpu/drm/radeon/radeon_ttm.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/radeon/radeon_gem.c

[PATCH v14 16/17] vfio/type1, arm64: untag user pointers in vaddr_get_pfn

2019-04-30 Thread Andrey Konovalov
user pointers in this function. Signed-off-by: Andrey Konovalov --- drivers/vfio/vfio_iommu_type1.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c index d0f731c9920a..5daa966d799e 100644 --- a/drivers/vfio/vfio_iommu_type1.c

[PATCH v14 13/17] IB/mlx4, arm64: untag user pointers in mlx4_get_umem_mr

2019-04-30 Thread Andrey Konovalov
. Untag user pointers in this function. Signed-off-by: Andrey Konovalov Reviewed-by: Leon Romanovsky --- 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 395379a480cb

[PATCH v14 05/17] arms64: untag user pointers passed to memory syscalls

2019-04-30 Thread Andrey Konovalov
, mincore, mlock, mlock2, mmap, mmap_pgoff, mprotect, mremap, msync, munlock, munmap, remap_file_pages, shmat and shmdt. This is done by untagging pointers passed to these syscalls in the prologues of their handlers. Signed-off-by: Andrey Konovalov --- arch/arm64/kernel/sys.c | 128

[PATCH v14 03/17] lib, arm64: untag user pointers in strn*_user

2019-04-30 Thread Andrey Konovalov
-by: Andrey Konovalov --- lib/strncpy_from_user.c | 3 ++- lib/strnlen_user.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c index 58eacd41526c..6209bb9507c7 100644 --- a/lib/strncpy_from_user.c +++ b/lib

[PATCH v14 10/17] fs, arm64: untag user pointers in fs/userfaultfd.c

2019-04-30 Thread Andrey Konovalov
done with untagged pointers. Untag user pointers in these functions. Signed-off-by: Andrey Konovalov --- fs/userfaultfd.c | 5 + 1 file changed, 5 insertions(+) diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index f5de1e726356..fdee0db0e847 100644 --- a/fs/userfaultfd.c +++ b/fs

[PATCH v14 02/17] arm64: untag user pointers in access_ok and __uaccess_mask_ptr

2019-04-30 Thread Andrey Konovalov
temporarily untags the pointers to perform the checks, but then passes them as is into the kernel internals. Reviewed-by: Catalin Marinas Signed-off-by: Andrey Konovalov --- arch/arm64/include/asm/uaccess.h | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/arch/arm64/include

[PATCH v14 01/17] uaccess: add untagged_addr definition for other arches

2019-04-30 Thread Andrey Konovalov
arm64. Acked-by: Catalin Marinas Signed-off-by: Andrey Konovalov --- include/linux/mm.h | 4 1 file changed, 4 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index 6b10c21630f5..44041df804a6 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -99,6 +99,10 @@ extern

[PATCH v14 14/17] media/v4l2-core, arm64: untag user pointers in videobuf_dma_contig_user_get

2019-04-30 Thread Andrey Konovalov
pointers. Untag the pointers in this function. Signed-off-by: Andrey Konovalov --- 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

[PATCH v14 09/17] fs, arm64: untag user pointers in copy_mount_options

2019-04-30 Thread Andrey Konovalov
size is calculated to not allow the exact_copy_from_user() call to cross TASK_SIZE boundary. However if the address is tagged, then the size will be calculated incorrectly. Untag the address before subtracting. Signed-off-by: Andrey Konovalov --- fs/namespace.c | 2 +- 1 file changed, 1

[PATCH v14 08/17] mm, arm64: untag user pointers in get_vaddr_frames

2019-04-30 Thread Andrey Konovalov
of locating and changing all callers of this function, perform untagging in it. Signed-off-by: Andrey Konovalov --- mm/frame_vector.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/frame_vector.c b/mm/frame_vector.c index c64dca6e27c2..c431ca81dad5 100644 --- a/mm/frame_vector.c +++ b

[PATCH v14 15/17] tee, arm64: untag user pointers in tee_shm_register

2019-04-30 Thread Andrey Konovalov
s (via __check_mem_type()), which can only by done with untagged pointers. Untag user pointers in this function. Signed-off-by: Andrey Konovalov --- drivers/tee/tee_shm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/tee/tee_shm.c b/drivers/tee/tee_shm.c index 0b9ab1d0dd45..8e7b52ab6c63

[PATCH v14 07/17] mm, arm64: untag user pointers in mm/gup.c

2019-04-30 Thread Andrey Konovalov
get_user_pages, that is used by the futex syscall). Since a user can provided tagged addresses, we need to handle this case. Add untagging to gup.c functions that use user addresses for vma lookups. Signed-off-by: Andrey Konovalov --- mm/gup.c | 4 1 file changed, 4 insertions(+) diff --git

Re: [PATCH v14 12/17] drm/radeon, arm64: untag user pointers

2019-05-06 Thread Andrey Konovalov
On Tue, Apr 30, 2019 at 7:57 PM Kuehling, Felix wrote: > > On 2019-04-30 9:25 a.m., Andrey Konovalov wrote: > > [CAUTION: External Email] > > > > This patch is a part of a series that extends arm64 kernel ABI to allow to > > pass tagged user pointers (with the top by

Re: [PATCH v14 11/17] drm/amdgpu, arm64: untag user pointers

2019-05-06 Thread Andrey Konovalov
On Tue, Apr 30, 2019 at 8:03 PM Kuehling, Felix wrote: > > On 2019-04-30 9:25 a.m., Andrey Konovalov wrote: > > [CAUTION: External Email] > > > > This patch is a part of a series that extends arm64 kernel ABI to allow to > > pass tagged user pointers (with the top by

Re: [PATCH v14 08/17] mm, arm64: untag user pointers in get_vaddr_frames

2019-05-06 Thread Andrey Konovalov
On Fri, May 3, 2019 at 6:51 PM Catalin Marinas wrote: > > On Tue, Apr 30, 2019 at 03:25:04PM +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

Re: [PATCH v14 10/17] fs, arm64: untag user pointers in fs/userfaultfd.c

2019-05-06 Thread Andrey Konovalov
On Fri, May 3, 2019 at 6:56 PM Catalin Marinas wrote: > > On Tue, Apr 30, 2019 at 03:25:06PM +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

[PATCH v15 06/17] mm: untag user pointers in do_pages_move

2019-05-06 Thread Andrey Konovalov
. Signed-off-by: Andrey Konovalov --- mm/migrate.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/migrate.c b/mm/migrate.c index 663a5449367a..c014a07135f0 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -1617,6 +1617,7 @@ static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes

[PATCH v15 07/17] mm, arm64: untag user pointers in mm/gup.c

2019-05-06 Thread Andrey Konovalov
get_user_pages, that is used by the futex syscall). Since a user can provided tagged addresses, we need to handle this case. Add untagging to gup.c functions that use user addresses for vma lookups. Signed-off-by: Andrey Konovalov --- mm/gup.c | 4 1 file changed, 4 insertions(+) diff --git

[PATCH v15 09/17] fs, arm64: untag user pointers in copy_mount_options

2019-05-06 Thread Andrey Konovalov
size is calculated to not allow the exact_copy_from_user() call to cross TASK_SIZE boundary. However if the address is tagged, then the size will be calculated incorrectly. Untag the address before subtracting. Signed-off-by: Andrey Konovalov --- fs/namespace.c | 2 +- 1 file changed, 1

[PATCH v15 00/17] arm64: untag user pointers passed to the kernel

2019-05-06 Thread Andrey Konovalov
8-rc1+). Changes in v3: - Rebased onto e5c51f30 (4.17-rc6+). - Added linux-arch@ to the list of recipients. Changes in v2: - Rebased onto 2d618bdf (4.17-rc3+). - Removed excessive untagging in gup.c. - Removed untagging pointers returned from __uaccess_mask_ptr. Changes in v1: - Rebased o

[PATCH v15 17/17] selftests, arm64: add a selftest for passing tagged pointers to kernel

2019-05-06 Thread Andrey Konovalov
kernel accepting tagged user pointers the test fails with EFAULT. Signed-off-by: Andrey Konovalov --- tools/testing/selftests/arm64/.gitignore | 1 + tools/testing/selftests/arm64/Makefile| 11 ++ .../testing/selftests/arm64/run_tags_test.sh | 12 +++ tools/testing

Re: [PATCH v14 13/17] IB/mlx4, arm64: untag user pointers in mlx4_get_umem_mr

2019-05-06 Thread Andrey Konovalov
On Fri, May 3, 2019 at 7:03 PM Catalin Marinas wrote: > > On Tue, Apr 30, 2019 at 03:25:09PM +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

[PATCH v15 05/17] arms64: untag user pointers passed to memory syscalls

2019-05-06 Thread Andrey Konovalov
, mincore, mlock, mlock2, mmap, mmap_pgoff, mprotect, mremap, msync, munlock, munmap, remap_file_pages, shmat and shmdt. This is done by untagging pointers passed to these syscalls in the prologues of their handlers. Signed-off-by: Andrey Konovalov --- arch/arm64/kernel/sys.c | 128

[PATCH v15 04/17] mm: add ksys_ wrappers to memory syscalls

2019-05-06 Thread Andrey Konovalov
this series will add a custom implementation for these syscalls that makes them accept tagged pointers on arm64. Signed-off-by: Andrey Konovalov --- include/linux/syscalls.h | 22 +++ ipc/shm.c| 7 ++- mm/madvise.c | 129 ---

[PATCH v15 03/17] lib, arm64: untag user pointers in strn*_user

2019-05-06 Thread Andrey Konovalov
-by: Andrey Konovalov --- lib/strncpy_from_user.c | 3 ++- lib/strnlen_user.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c index 58eacd41526c..6209bb9507c7 100644 --- a/lib/strncpy_from_user.c +++ b/lib

[PATCH v15 13/17] IB, arm64: untag user pointers in ib_uverbs_(re)reg_mr()

2019-05-06 Thread Andrey Konovalov
by done with untagged pointers. Untag user pointers in these functions. Signed-off-by: Andrey Konovalov --- 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 062a86c04123

[PATCH v15 02/17] arm64: untag user pointers in access_ok and __uaccess_mask_ptr

2019-05-06 Thread Andrey Konovalov
temporarily untags the pointers to perform the checks, but then passes them as is into the kernel internals. Reviewed-by: Catalin Marinas Signed-off-by: Andrey Konovalov --- arch/arm64/include/asm/uaccess.h | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/arch/arm64/include

[PATCH v15 12/17] drm/radeon, arm64: untag user pointers in radeon_gem_userptr_ioctl

2019-05-06 Thread Andrey Konovalov
radeon_gem_userptr_ioctl(). Signed-off-by: Andrey Konovalov --- drivers/gpu/drm/radeon/radeon_gem.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c index 44617dec8183..90eb78fb5eb2 100644 --- a/drivers/gpu/drm/radeon

[PATCH v15 14/17] media/v4l2-core, arm64: untag user pointers in videobuf_dma_contig_user_get

2019-05-06 Thread Andrey Konovalov
pointers. Untag the pointers in this function. Signed-off-by: Andrey Konovalov --- 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

[PATCH v15 10/17] fs, arm64: untag user pointers in fs/userfaultfd.c

2019-05-06 Thread Andrey Konovalov
user pointers in validate_range(). Signed-off-by: Andrey Konovalov --- fs/userfaultfd.c | 22 -- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index f5de1e726356..aa47ed0969dd 100644 --- a/fs/userfaultfd.c +++ b/fs

[PATCH v15 08/17] mm, arm64: untag user pointers in get_vaddr_frames

2019-05-06 Thread Andrey Konovalov
of locating and changing all callers of this function, perform untagging in it. Signed-off-by: Andrey Konovalov --- mm/frame_vector.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/frame_vector.c b/mm/frame_vector.c index c64dca6e27c2..c431ca81dad5 100644 --- a/mm/frame_vector.c +++ b

[PATCH v15 11/17] drm/amdgpu, arm64: untag user pointers

2019-05-06 Thread Andrey Konovalov
also makes sure that an untagged pointer is passed to amdgpu_ttm_tt_get_user_pages(), which uses it for vma lookups. Suggested-by: Kuehling, Felix Signed-off-by: Andrey Konovalov --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 2 ++ 2

[PATCH v15 15/17] tee, arm64: untag user pointers in tee_shm_register

2019-05-06 Thread Andrey Konovalov
s (via __check_mem_type()), which can only by done with untagged pointers. Untag user pointers in this function. Signed-off-by: Andrey Konovalov --- drivers/tee/tee_shm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/tee/tee_shm.c b/drivers/tee/tee_shm.c index 0b9ab1d0dd45..8e7b52ab6c63

[PATCH v15 01/17] uaccess: add untagged_addr definition for other arches

2019-05-06 Thread Andrey Konovalov
arm64. Acked-by: Catalin Marinas Signed-off-by: Andrey Konovalov --- include/linux/mm.h | 4 1 file changed, 4 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index 6b10c21630f5..44041df804a6 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -99,6 +99,10 @@ extern

[PATCH v15 16/17] vfio/type1, arm64: untag user pointers in vaddr_get_pfn

2019-05-06 Thread Andrey Konovalov
user pointers in this function. Signed-off-by: Andrey Konovalov --- drivers/vfio/vfio_iommu_type1.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c index d0f731c9920a..5daa966d799e 100644 --- a/drivers/vfio/vfio_iommu_type1.c

Re: [PATCH v15 00/17] arm64: untag user pointers passed to the kernel

2019-05-28 Thread Andrey Konovalov
Thanks for a lot of valuable input! I've read through all the replies and got somewhat lost. What are the changes I need to do to this series? 1. Should I move untagging for memory syscalls back to the generic code so other arches would make use of it as well, or should I keep the arm64 specific m

Re: [PATCH v15 17/17] selftests, arm64: add a selftest for passing tagged pointers to kernel

2019-05-31 Thread Andrey Konovalov
On Wed, May 22, 2019 at 4:16 PM Catalin Marinas wrote: > > On Mon, May 06, 2019 at 06:31:03PM +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 o

Re: [PATCH v15 00/17] arm64: untag user pointers passed to the kernel

2019-05-31 Thread Andrey Konovalov
On Thu, May 30, 2019 at 7:15 PM Catalin Marinas wrote: > > On Tue, May 28, 2019 at 04:14:45PM +0200, Andrey Konovalov wrote: > > Thanks for a lot of valuable input! I've read through all the replies > > and got somewhat lost. What are the changes I need to do to this > &

Re: [PATCH v15 00/17] arm64: untag user pointers passed to the kernel

2019-05-31 Thread Andrey Konovalov
On Fri, May 31, 2019 at 6:20 PM Catalin Marinas wrote: > > On Fri, May 31, 2019 at 04:29:10PM +0200, Andrey Konovalov wrote: > > On Thu, May 30, 2019 at 7:15 PM Catalin Marinas > > wrote: > > > On Tue, May 28, 2019 at 04:14:45PM +0200, Andrey Konovalov wrote:

[PATCH v16 03/16] lib, arm64: untag user pointers in strn*_user

2019-06-03 Thread Andrey Konovalov
: Catalin Marinas Signed-off-by: Andrey Konovalov --- lib/strncpy_from_user.c | 3 ++- lib/strnlen_user.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c index 023ba9f3b99f..dccb95af6003 100644 --- a/lib

[PATCH v16 00/16] arm64: untag user pointers passed to the kernel

2019-06-03 Thread Andrey Konovalov
Removed excessive untagging in gup.c. - Removed untagging pointers returned from __uaccess_mask_ptr. Changes in v1: - Rebased onto 4.17-rc1. Changes in RFC v2: - Added "#ifndef untagged_addr..." fallback in linux/uaccess.h instead of defining it for each arch individually. - Updated Do

[PATCH v16 01/16] uaccess: add untagged_addr definition for other arches

2019-06-03 Thread Andrey Konovalov
arm64. Acked-by: Catalin Marinas Reviewed-by: Khalid Aziz Signed-off-by: Andrey Konovalov --- include/linux/mm.h | 4 1 file changed, 4 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index 0e8834ac32b7..949d43e9c0b6 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h

[PATCH v16 02/16] arm64: untag user pointers in access_ok and __uaccess_mask_ptr

2019-06-03 Thread Andrey Konovalov
temporarily untags the pointers to perform the checks, but then passes them as is into the kernel internals. Reviewed-by: Catalin Marinas Signed-off-by: Andrey Konovalov --- arch/arm64/include/asm/uaccess.h | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/arch/arm64/include

[PATCH v16 04/16] mm: untag user pointers in do_pages_move

2019-06-03 Thread Andrey Konovalov
. Reviewed-by: Catalin Marinas Signed-off-by: Andrey Konovalov --- mm/migrate.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/migrate.c b/mm/migrate.c index f2ecc2855a12..3930bb6fa656 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -1617,6 +1617,7 @@ static int do_pages_move(struct mm_struct

[PATCH v16 06/16] mm, arm64: untag user pointers in mm/gup.c

2019-06-03 Thread Andrey Konovalov
get_user_pages, that is used by the futex syscall). Since a user can provided tagged addresses, we need to handle this case. Add untagging to gup.c functions that use user addresses for vma lookups. Reviewed-by: Catalin Marinas Signed-off-by: Andrey Konovalov --- mm/gup.c | 4 1 file changed

[PATCH v16 12/16] IB, arm64: untag user pointers in ib_uverbs_(re)reg_mr()

2019-06-03 Thread Andrey Konovalov
by done with untagged pointers. Untag user pointers in these functions. Signed-off-by: Andrey Konovalov --- 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

[PATCH v16 11/16] drm/radeon, arm64: untag user pointers in radeon_gem_userptr_ioctl

2019-06-03 Thread Andrey Konovalov
radeon_gem_userptr_ioctl(). Suggested-by: Kuehling, Felix Acked-by: Felix Kuehling Signed-off-by: Andrey Konovalov --- drivers/gpu/drm/radeon/radeon_gem.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c index 44617dec8183

[PATCH v16 13/16] media/v4l2-core, arm64: untag user pointers in videobuf_dma_contig_user_get

2019-06-03 Thread Andrey Konovalov
pointers. Untag the pointers in this function. Acked-by: Mauro Carvalho Chehab Signed-off-by: Andrey Konovalov --- 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

[PATCH v16 14/16] tee, arm64: untag user pointers in tee_shm_register

2019-06-03 Thread Andrey Konovalov
s (via __check_mem_type()), which can only by done with untagged pointers. Untag user pointers in this function. Signed-off-by: Andrey Konovalov --- drivers/tee/tee_shm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/tee/tee_shm.c b/drivers/tee/tee_shm.c index 49fd7312e2aa..96945f4cefb8

[PATCH v16 08/16] fs, arm64: untag user pointers in copy_mount_options

2019-06-03 Thread Andrey Konovalov
size is calculated to not allow the exact_copy_from_user() call to cross TASK_SIZE boundary. However if the address is tagged, then the size will be calculated incorrectly. Untag the address before subtracting. Reviewed-by: Catalin Marinas Signed-off-by: Andrey Konovalov --- fs/namespace.c | 2

[PATCH v16 09/16] fs, arm64: untag user pointers in fs/userfaultfd.c

2019-06-03 Thread Andrey Konovalov
user pointers in validate_range(). Signed-off-by: Andrey Konovalov --- fs/userfaultfd.c | 22 -- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index 3b30301c90ec..24d68c3b5ee2 100644 --- a/fs/userfaultfd.c +++ b/fs

[PATCH v16 16/16] selftests, arm64: add a selftest for passing tagged pointers to kernel

2019-06-03 Thread Andrey Konovalov
kernel accepting tagged user pointers the test fails with EFAULT. Signed-off-by: Andrey Konovalov --- tools/testing/selftests/arm64/.gitignore | 1 + tools/testing/selftests/arm64/Makefile| 22 ++ .../testing/selftests/arm64/run_tags_test.sh | 12 ++ tools/testing

[PATCH v16 07/16] mm, arm64: untag user pointers in get_vaddr_frames

2019-06-03 Thread Andrey Konovalov
of locating and changing all callers of this function, perform untagging in it. Signed-off-by: Andrey Konovalov --- mm/frame_vector.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/frame_vector.c b/mm/frame_vector.c index c64dca6e27c2..c431ca81dad5 100644 --- a/mm/frame_vector.c +++ b

[PATCH v16 10/16] drm/amdgpu, arm64: untag user pointers

2019-06-03 Thread Andrey Konovalov
also makes sure that an untagged pointer is passed to amdgpu_ttm_tt_get_user_pages(), which uses it for vma lookups. Suggested-by: Kuehling, Felix Acked-by: Felix Kuehling Signed-off-by: Andrey Konovalov --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 2 +- drivers/gpu/drm/amd/amdgpu

[PATCH v16 15/16] vfio/type1, arm64: untag user pointers in vaddr_get_pfn

2019-06-03 Thread Andrey Konovalov
user pointers in this function. Signed-off-by: Andrey Konovalov --- drivers/vfio/vfio_iommu_type1.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c index 3ddc375e7063..528e39a1c2dd 100644 --- a/drivers/vfio/vfio_iommu_type1.c

[PATCH v16 05/16] arm64: untag user pointers passed to memory syscalls

2019-06-03 Thread Andrey Konovalov
, mincore, mlock, mlock2, mprotect, mremap, msync, munlock. Signed-off-by: Andrey Konovalov --- mm/madvise.c | 2 ++ mm/mempolicy.c | 3 +++ mm/mincore.c | 2 ++ mm/mlock.c | 4 mm/mprotect.c | 2 ++ mm/mremap.c| 2 ++ mm/msync.c | 2 ++ 7 files changed, 17 insertions(+) diff

Re: [PATCH v16 01/16] uaccess: add untagged_addr definition for other arches

2019-06-03 Thread Andrey Konovalov
On Mon, Jun 3, 2019 at 7:04 PM Khalid Aziz wrote: > > On 6/3/19 10:55 AM, Andrey Konovalov wrote: > > To allow arm64 syscalls to accept tagged pointers from userspace, we must > > untag them when they are passed to the kernel. Since untagging is done in > > generic

Re: [PATCH v16 01/16] uaccess: add untagged_addr definition for other arches

2019-06-04 Thread Andrey Konovalov
On Mon, Jun 3, 2019 at 8:17 PM Khalid Aziz wrote: > > On 6/3/19 11:29 AM, Christoph Hellwig wrote: > > On Mon, Jun 03, 2019 at 11:24:35AM -0600, Khalid Aziz wrote: > >> On 6/3/19 11:06 AM, Andrey Konovalov wrote: > >>> On Mon, Jun 3, 2019 at 7:04 PM

Re: [PATCH v16 12/16] IB, arm64: untag user pointers in ib_uverbs_(re)reg_mr()

2019-06-04 Thread Andrey Konovalov
On Mon, Jun 3, 2019 at 7:46 PM Jason Gunthorpe wrote: > > 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

Re: [PATCH v16 12/16] IB, arm64: untag user pointers in ib_uverbs_(re)reg_mr()

2019-06-04 Thread Andrey Konovalov
On Tue, Jun 4, 2019 at 2:27 PM Jason Gunthorpe wrote: > > On Tue, Jun 04, 2019 at 02:18:19PM +0200, Andrey Konovalov wrote: > > On Mon, Jun 3, 2019 at 7:46 PM Jason Gunthorpe wrote: > > > > > > On Mon, Jun 03, 2019 at 06:55:14PM +0200, Andrey Konovalov wrote: >

Re: [PATCH v16 12/16] IB, arm64: untag user pointers in ib_uverbs_(re)reg_mr()

2019-06-04 Thread Andrey Konovalov
On Tue, Jun 4, 2019 at 3:02 PM Jason Gunthorpe wrote: > > On Tue, Jun 04, 2019 at 02:45:32PM +0200, Andrey Konovalov wrote: > > On Tue, Jun 4, 2019 at 2:27 PM Jason Gunthorpe wrote: > > > > > > On Tue, Jun 04, 2019 at 02:18:19PM +0200, Andrey Konovalov wrote: >

Re: [PATCH v16 08/16] fs, arm64: untag user pointers in copy_mount_options

2019-06-11 Thread Andrey Konovalov
On Sat, Jun 8, 2019 at 6:02 AM Kees Cook wrote: > > On Mon, Jun 03, 2019 at 06:55:10PM +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

  1   2   >