All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kees Cook <keescook@chromium.org>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: Andrey Konovalov <andreyknvl@google.com>,
	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,
	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>,
	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.>
Subject: Re: [PATCH v16 02/16] arm64: untag user pointers in access_ok and __uaccess_mask_ptr
Date: Mon, 10 Jun 2019 11:07:03 -0700	[thread overview]
Message-ID: <201906101106.3CA50745E3@keescook> (raw)
In-Reply-To: <20190610175326.GC25803@arrakis.emea.arm.com>

On Mon, Jun 10, 2019 at 06:53:27PM +0100, Catalin Marinas wrote:
> On Mon, Jun 03, 2019 at 06:55:04PM +0200, Andrey Konovalov wrote:
> > diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
> > index e5d5f31c6d36..9164ecb5feca 100644
> > --- a/arch/arm64/include/asm/uaccess.h
> > +++ b/arch/arm64/include/asm/uaccess.h
> > @@ -94,7 +94,7 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
> >  	return ret;
> >  }
> >  
> > -#define access_ok(addr, size)	__range_ok(addr, size)
> > +#define access_ok(addr, size)	__range_ok(untagged_addr(addr), size)
> 
> I'm going to propose an opt-in method here (RFC for now). We can't have
> a check in untagged_addr() since this is already used throughout the
> kernel for both user and kernel addresses (khwasan) but we can add one
> in __range_ok(). The same prctl() option will be used for controlling
> the precise/imprecise mode of MTE later on. We can use a TIF_ flag here
> assuming that this will be called early on and any cloned thread will
> inherit this.
> 
> Anyway, it's easier to paste some diff than explain but Vincenzo can
> fold them into his ABI patches that should really go together with
> these. I added a couple of MTE definitions for prctl() as an example,
> not used currently:
> 
> ------------------8<---------------------------------------------
> diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
> index fcd0e691b1ea..2d4cb7e4edab 100644
> --- a/arch/arm64/include/asm/processor.h
> +++ b/arch/arm64/include/asm/processor.h
> @@ -307,6 +307,10 @@ extern void __init minsigstksz_setup(void);
>  /* PR_PAC_RESET_KEYS prctl */
>  #define PAC_RESET_KEYS(tsk, arg)	ptrauth_prctl_reset_keys(tsk, arg)
>  
> +/* PR_UNTAGGED_UADDR prctl */
> +int untagged_uaddr_set_mode(unsigned long arg);
> +#define SET_UNTAGGED_UADDR_MODE(arg)	untagged_uaddr_set_mode(arg)
> +
>  /*
>   * For CONFIG_GCC_PLUGIN_STACKLEAK
>   *
> diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h
> index c285d1ce7186..89ce77773c49 100644
> --- a/arch/arm64/include/asm/thread_info.h
> +++ b/arch/arm64/include/asm/thread_info.h
> @@ -101,6 +101,7 @@ void arch_release_task_struct(struct task_struct *tsk);
>  #define TIF_SVE			23	/* Scalable Vector Extension in use */
>  #define TIF_SVE_VL_INHERIT	24	/* Inherit sve_vl_onexec across exec */
>  #define TIF_SSBD		25	/* Wants SSB mitigation */
> +#define TIF_UNTAGGED_UADDR	26
>  
>  #define _TIF_SIGPENDING		(1 << TIF_SIGPENDING)
>  #define _TIF_NEED_RESCHED	(1 << TIF_NEED_RESCHED)
> @@ -116,6 +117,7 @@ void arch_release_task_struct(struct task_struct *tsk);
>  #define _TIF_FSCHECK		(1 << TIF_FSCHECK)
>  #define _TIF_32BIT		(1 << TIF_32BIT)
>  #define _TIF_SVE		(1 << TIF_SVE)
> +#define _TIF_UNTAGGED_UADDR	(1 << TIF_UNTAGGED_UADDR)
>  
>  #define _TIF_WORK_MASK		(_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
>  				 _TIF_NOTIFY_RESUME | _TIF_FOREIGN_FPSTATE | \
> diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
> index 9164ecb5feca..54f5bbaebbc4 100644
> --- a/arch/arm64/include/asm/uaccess.h
> +++ b/arch/arm64/include/asm/uaccess.h
> @@ -73,6 +73,9 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
>  {
>  	unsigned long ret, limit = current_thread_info()->addr_limit;
>  
> +	if (test_thread_flag(TIF_UNTAGGED_UADDR))
> +		addr = untagged_addr(addr);
> +
>  	__chk_user_ptr(addr);
>  	asm volatile(
>  	// A + B <= C + 1 for all A,B,C, in four easy steps:
> @@ -94,7 +97,7 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
>  	return ret;
>  }
>  
> -#define access_ok(addr, size)	__range_ok(untagged_addr(addr), size)
> +#define access_ok(addr, size)	__range_ok(addr, size)
>  #define user_addr_max			get_fs
>  
>  #define _ASM_EXTABLE(from, to)						\
> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
> index 3767fb21a5b8..fd191c5b92aa 100644
> --- a/arch/arm64/kernel/process.c
> +++ b/arch/arm64/kernel/process.c
> @@ -552,3 +552,18 @@ void arch_setup_new_exec(void)
>  
>  	ptrauth_thread_init_user(current);
>  }
> +
> +/*
> + * Enable the relaxed ABI allowing tagged user addresses into the kernel.
> + */
> +int untagged_uaddr_set_mode(unsigned long arg)
> +{
> +	if (is_compat_task())
> +		return -ENOTSUPP;
> +	if (arg)
> +		return -EINVAL;
> +
> +	set_thread_flag(TIF_UNTAGGED_UADDR);
> +
> +	return 0;
> +}

I think this should be paired with a flag clearing in copy_thread(),
yes? (i.e. each binary needs to opt in)

-- 
Kees Cook

WARNING: multiple messages have this Message-ID (diff)
From: Kees Cook <keescook@chromium.org>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: Andrey Konovalov <andreyknvl@google.com>,
	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,
	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>,
	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>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	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 02/16] arm64: untag user pointers in access_ok and __uaccess_mask_ptr
Date: Mon, 10 Jun 2019 11:07:03 -0700	[thread overview]
Message-ID: <201906101106.3CA50745E3@keescook> (raw)
In-Reply-To: <20190610175326.GC25803@arrakis.emea.arm.com>

On Mon, Jun 10, 2019 at 06:53:27PM +0100, Catalin Marinas wrote:
> On Mon, Jun 03, 2019 at 06:55:04PM +0200, Andrey Konovalov wrote:
> > diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
> > index e5d5f31c6d36..9164ecb5feca 100644
> > --- a/arch/arm64/include/asm/uaccess.h
> > +++ b/arch/arm64/include/asm/uaccess.h
> > @@ -94,7 +94,7 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
> >  	return ret;
> >  }
> >  
> > -#define access_ok(addr, size)	__range_ok(addr, size)
> > +#define access_ok(addr, size)	__range_ok(untagged_addr(addr), size)
> 
> I'm going to propose an opt-in method here (RFC for now). We can't have
> a check in untagged_addr() since this is already used throughout the
> kernel for both user and kernel addresses (khwasan) but we can add one
> in __range_ok(). The same prctl() option will be used for controlling
> the precise/imprecise mode of MTE later on. We can use a TIF_ flag here
> assuming that this will be called early on and any cloned thread will
> inherit this.
> 
> Anyway, it's easier to paste some diff than explain but Vincenzo can
> fold them into his ABI patches that should really go together with
> these. I added a couple of MTE definitions for prctl() as an example,
> not used currently:
> 
> ------------------8<---------------------------------------------
> diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
> index fcd0e691b1ea..2d4cb7e4edab 100644
> --- a/arch/arm64/include/asm/processor.h
> +++ b/arch/arm64/include/asm/processor.h
> @@ -307,6 +307,10 @@ extern void __init minsigstksz_setup(void);
>  /* PR_PAC_RESET_KEYS prctl */
>  #define PAC_RESET_KEYS(tsk, arg)	ptrauth_prctl_reset_keys(tsk, arg)
>  
> +/* PR_UNTAGGED_UADDR prctl */
> +int untagged_uaddr_set_mode(unsigned long arg);
> +#define SET_UNTAGGED_UADDR_MODE(arg)	untagged_uaddr_set_mode(arg)
> +
>  /*
>   * For CONFIG_GCC_PLUGIN_STACKLEAK
>   *
> diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h
> index c285d1ce7186..89ce77773c49 100644
> --- a/arch/arm64/include/asm/thread_info.h
> +++ b/arch/arm64/include/asm/thread_info.h
> @@ -101,6 +101,7 @@ void arch_release_task_struct(struct task_struct *tsk);
>  #define TIF_SVE			23	/* Scalable Vector Extension in use */
>  #define TIF_SVE_VL_INHERIT	24	/* Inherit sve_vl_onexec across exec */
>  #define TIF_SSBD		25	/* Wants SSB mitigation */
> +#define TIF_UNTAGGED_UADDR	26
>  
>  #define _TIF_SIGPENDING		(1 << TIF_SIGPENDING)
>  #define _TIF_NEED_RESCHED	(1 << TIF_NEED_RESCHED)
> @@ -116,6 +117,7 @@ void arch_release_task_struct(struct task_struct *tsk);
>  #define _TIF_FSCHECK		(1 << TIF_FSCHECK)
>  #define _TIF_32BIT		(1 << TIF_32BIT)
>  #define _TIF_SVE		(1 << TIF_SVE)
> +#define _TIF_UNTAGGED_UADDR	(1 << TIF_UNTAGGED_UADDR)
>  
>  #define _TIF_WORK_MASK		(_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
>  				 _TIF_NOTIFY_RESUME | _TIF_FOREIGN_FPSTATE | \
> diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
> index 9164ecb5feca..54f5bbaebbc4 100644
> --- a/arch/arm64/include/asm/uaccess.h
> +++ b/arch/arm64/include/asm/uaccess.h
> @@ -73,6 +73,9 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
>  {
>  	unsigned long ret, limit = current_thread_info()->addr_limit;
>  
> +	if (test_thread_flag(TIF_UNTAGGED_UADDR))
> +		addr = untagged_addr(addr);
> +
>  	__chk_user_ptr(addr);
>  	asm volatile(
>  	// A + B <= C + 1 for all A,B,C, in four easy steps:
> @@ -94,7 +97,7 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
>  	return ret;
>  }
>  
> -#define access_ok(addr, size)	__range_ok(untagged_addr(addr), size)
> +#define access_ok(addr, size)	__range_ok(addr, size)
>  #define user_addr_max			get_fs
>  
>  #define _ASM_EXTABLE(from, to)						\
> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
> index 3767fb21a5b8..fd191c5b92aa 100644
> --- a/arch/arm64/kernel/process.c
> +++ b/arch/arm64/kernel/process.c
> @@ -552,3 +552,18 @@ void arch_setup_new_exec(void)
>  
>  	ptrauth_thread_init_user(current);
>  }
> +
> +/*
> + * Enable the relaxed ABI allowing tagged user addresses into the kernel.
> + */
> +int untagged_uaddr_set_mode(unsigned long arg)
> +{
> +	if (is_compat_task())
> +		return -ENOTSUPP;
> +	if (arg)
> +		return -EINVAL;
> +
> +	set_thread_flag(TIF_UNTAGGED_UADDR);
> +
> +	return 0;
> +}

I think this should be paired with a flag clearing in copy_thread(),
yes? (i.e. each binary needs to opt in)

-- 
Kees Cook

WARNING: multiple messages have this Message-ID (diff)
From: keescook at chromium.org (Kees Cook)
Subject: [PATCH v16 02/16] arm64: untag user pointers in access_ok and __uaccess_mask_ptr
Date: Mon, 10 Jun 2019 11:07:03 -0700	[thread overview]
Message-ID: <201906101106.3CA50745E3@keescook> (raw)
In-Reply-To: <20190610175326.GC25803@arrakis.emea.arm.com>

On Mon, Jun 10, 2019 at 06:53:27PM +0100, Catalin Marinas wrote:
> On Mon, Jun 03, 2019 at 06:55:04PM +0200, Andrey Konovalov wrote:
> > diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
> > index e5d5f31c6d36..9164ecb5feca 100644
> > --- a/arch/arm64/include/asm/uaccess.h
> > +++ b/arch/arm64/include/asm/uaccess.h
> > @@ -94,7 +94,7 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
> >  	return ret;
> >  }
> >  
> > -#define access_ok(addr, size)	__range_ok(addr, size)
> > +#define access_ok(addr, size)	__range_ok(untagged_addr(addr), size)
> 
> I'm going to propose an opt-in method here (RFC for now). We can't have
> a check in untagged_addr() since this is already used throughout the
> kernel for both user and kernel addresses (khwasan) but we can add one
> in __range_ok(). The same prctl() option will be used for controlling
> the precise/imprecise mode of MTE later on. We can use a TIF_ flag here
> assuming that this will be called early on and any cloned thread will
> inherit this.
> 
> Anyway, it's easier to paste some diff than explain but Vincenzo can
> fold them into his ABI patches that should really go together with
> these. I added a couple of MTE definitions for prctl() as an example,
> not used currently:
> 
> ------------------8<---------------------------------------------
> diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
> index fcd0e691b1ea..2d4cb7e4edab 100644
> --- a/arch/arm64/include/asm/processor.h
> +++ b/arch/arm64/include/asm/processor.h
> @@ -307,6 +307,10 @@ extern void __init minsigstksz_setup(void);
>  /* PR_PAC_RESET_KEYS prctl */
>  #define PAC_RESET_KEYS(tsk, arg)	ptrauth_prctl_reset_keys(tsk, arg)
>  
> +/* PR_UNTAGGED_UADDR prctl */
> +int untagged_uaddr_set_mode(unsigned long arg);
> +#define SET_UNTAGGED_UADDR_MODE(arg)	untagged_uaddr_set_mode(arg)
> +
>  /*
>   * For CONFIG_GCC_PLUGIN_STACKLEAK
>   *
> diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h
> index c285d1ce7186..89ce77773c49 100644
> --- a/arch/arm64/include/asm/thread_info.h
> +++ b/arch/arm64/include/asm/thread_info.h
> @@ -101,6 +101,7 @@ void arch_release_task_struct(struct task_struct *tsk);
>  #define TIF_SVE			23	/* Scalable Vector Extension in use */
>  #define TIF_SVE_VL_INHERIT	24	/* Inherit sve_vl_onexec across exec */
>  #define TIF_SSBD		25	/* Wants SSB mitigation */
> +#define TIF_UNTAGGED_UADDR	26
>  
>  #define _TIF_SIGPENDING		(1 << TIF_SIGPENDING)
>  #define _TIF_NEED_RESCHED	(1 << TIF_NEED_RESCHED)
> @@ -116,6 +117,7 @@ void arch_release_task_struct(struct task_struct *tsk);
>  #define _TIF_FSCHECK		(1 << TIF_FSCHECK)
>  #define _TIF_32BIT		(1 << TIF_32BIT)
>  #define _TIF_SVE		(1 << TIF_SVE)
> +#define _TIF_UNTAGGED_UADDR	(1 << TIF_UNTAGGED_UADDR)
>  
>  #define _TIF_WORK_MASK		(_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
>  				 _TIF_NOTIFY_RESUME | _TIF_FOREIGN_FPSTATE | \
> diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
> index 9164ecb5feca..54f5bbaebbc4 100644
> --- a/arch/arm64/include/asm/uaccess.h
> +++ b/arch/arm64/include/asm/uaccess.h
> @@ -73,6 +73,9 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
>  {
>  	unsigned long ret, limit = current_thread_info()->addr_limit;
>  
> +	if (test_thread_flag(TIF_UNTAGGED_UADDR))
> +		addr = untagged_addr(addr);
> +
>  	__chk_user_ptr(addr);
>  	asm volatile(
>  	// A + B <= C + 1 for all A,B,C, in four easy steps:
> @@ -94,7 +97,7 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
>  	return ret;
>  }
>  
> -#define access_ok(addr, size)	__range_ok(untagged_addr(addr), size)
> +#define access_ok(addr, size)	__range_ok(addr, size)
>  #define user_addr_max			get_fs
>  
>  #define _ASM_EXTABLE(from, to)						\
> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
> index 3767fb21a5b8..fd191c5b92aa 100644
> --- a/arch/arm64/kernel/process.c
> +++ b/arch/arm64/kernel/process.c
> @@ -552,3 +552,18 @@ void arch_setup_new_exec(void)
>  
>  	ptrauth_thread_init_user(current);
>  }
> +
> +/*
> + * Enable the relaxed ABI allowing tagged user addresses into the kernel.
> + */
> +int untagged_uaddr_set_mode(unsigned long arg)
> +{
> +	if (is_compat_task())
> +		return -ENOTSUPP;
> +	if (arg)
> +		return -EINVAL;
> +
> +	set_thread_flag(TIF_UNTAGGED_UADDR);
> +
> +	return 0;
> +}

I think this should be paired with a flag clearing in copy_thread(),
yes? (i.e. each binary needs to opt in)

-- 
Kees Cook

WARNING: multiple messages have this Message-ID (diff)
From: keescook@chromium.org (Kees Cook)
Subject: [PATCH v16 02/16] arm64: untag user pointers in access_ok and __uaccess_mask_ptr
Date: Mon, 10 Jun 2019 11:07:03 -0700	[thread overview]
Message-ID: <201906101106.3CA50745E3@keescook> (raw)
Message-ID: <20190610180703.pa8UDIEsjRZ1cLdQesaaz69Rw2VF96GfRnqOV1DeZPg@z> (raw)
In-Reply-To: <20190610175326.GC25803@arrakis.emea.arm.com>

On Mon, Jun 10, 2019@06:53:27PM +0100, Catalin Marinas wrote:
> On Mon, Jun 03, 2019@06:55:04PM +0200, Andrey Konovalov wrote:
> > diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
> > index e5d5f31c6d36..9164ecb5feca 100644
> > --- a/arch/arm64/include/asm/uaccess.h
> > +++ b/arch/arm64/include/asm/uaccess.h
> > @@ -94,7 +94,7 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
> >  	return ret;
> >  }
> >  
> > -#define access_ok(addr, size)	__range_ok(addr, size)
> > +#define access_ok(addr, size)	__range_ok(untagged_addr(addr), size)
> 
> I'm going to propose an opt-in method here (RFC for now). We can't have
> a check in untagged_addr() since this is already used throughout the
> kernel for both user and kernel addresses (khwasan) but we can add one
> in __range_ok(). The same prctl() option will be used for controlling
> the precise/imprecise mode of MTE later on. We can use a TIF_ flag here
> assuming that this will be called early on and any cloned thread will
> inherit this.
> 
> Anyway, it's easier to paste some diff than explain but Vincenzo can
> fold them into his ABI patches that should really go together with
> these. I added a couple of MTE definitions for prctl() as an example,
> not used currently:
> 
> ------------------8<---------------------------------------------
> diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
> index fcd0e691b1ea..2d4cb7e4edab 100644
> --- a/arch/arm64/include/asm/processor.h
> +++ b/arch/arm64/include/asm/processor.h
> @@ -307,6 +307,10 @@ extern void __init minsigstksz_setup(void);
>  /* PR_PAC_RESET_KEYS prctl */
>  #define PAC_RESET_KEYS(tsk, arg)	ptrauth_prctl_reset_keys(tsk, arg)
>  
> +/* PR_UNTAGGED_UADDR prctl */
> +int untagged_uaddr_set_mode(unsigned long arg);
> +#define SET_UNTAGGED_UADDR_MODE(arg)	untagged_uaddr_set_mode(arg)
> +
>  /*
>   * For CONFIG_GCC_PLUGIN_STACKLEAK
>   *
> diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h
> index c285d1ce7186..89ce77773c49 100644
> --- a/arch/arm64/include/asm/thread_info.h
> +++ b/arch/arm64/include/asm/thread_info.h
> @@ -101,6 +101,7 @@ void arch_release_task_struct(struct task_struct *tsk);
>  #define TIF_SVE			23	/* Scalable Vector Extension in use */
>  #define TIF_SVE_VL_INHERIT	24	/* Inherit sve_vl_onexec across exec */
>  #define TIF_SSBD		25	/* Wants SSB mitigation */
> +#define TIF_UNTAGGED_UADDR	26
>  
>  #define _TIF_SIGPENDING		(1 << TIF_SIGPENDING)
>  #define _TIF_NEED_RESCHED	(1 << TIF_NEED_RESCHED)
> @@ -116,6 +117,7 @@ void arch_release_task_struct(struct task_struct *tsk);
>  #define _TIF_FSCHECK		(1 << TIF_FSCHECK)
>  #define _TIF_32BIT		(1 << TIF_32BIT)
>  #define _TIF_SVE		(1 << TIF_SVE)
> +#define _TIF_UNTAGGED_UADDR	(1 << TIF_UNTAGGED_UADDR)
>  
>  #define _TIF_WORK_MASK		(_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
>  				 _TIF_NOTIFY_RESUME | _TIF_FOREIGN_FPSTATE | \
> diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
> index 9164ecb5feca..54f5bbaebbc4 100644
> --- a/arch/arm64/include/asm/uaccess.h
> +++ b/arch/arm64/include/asm/uaccess.h
> @@ -73,6 +73,9 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
>  {
>  	unsigned long ret, limit = current_thread_info()->addr_limit;
>  
> +	if (test_thread_flag(TIF_UNTAGGED_UADDR))
> +		addr = untagged_addr(addr);
> +
>  	__chk_user_ptr(addr);
>  	asm volatile(
>  	// A + B <= C + 1 for all A,B,C, in four easy steps:
> @@ -94,7 +97,7 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
>  	return ret;
>  }
>  
> -#define access_ok(addr, size)	__range_ok(untagged_addr(addr), size)
> +#define access_ok(addr, size)	__range_ok(addr, size)
>  #define user_addr_max			get_fs
>  
>  #define _ASM_EXTABLE(from, to)						\
> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
> index 3767fb21a5b8..fd191c5b92aa 100644
> --- a/arch/arm64/kernel/process.c
> +++ b/arch/arm64/kernel/process.c
> @@ -552,3 +552,18 @@ void arch_setup_new_exec(void)
>  
>  	ptrauth_thread_init_user(current);
>  }
> +
> +/*
> + * Enable the relaxed ABI allowing tagged user addresses into the kernel.
> + */
> +int untagged_uaddr_set_mode(unsigned long arg)
> +{
> +	if (is_compat_task())
> +		return -ENOTSUPP;
> +	if (arg)
> +		return -EINVAL;
> +
> +	set_thread_flag(TIF_UNTAGGED_UADDR);
> +
> +	return 0;
> +}

I think this should be paired with a flag clearing in copy_thread(),
yes? (i.e. each binary needs to opt in)

-- 
Kees Cook

WARNING: multiple messages have this Message-ID (diff)
From: Kees Cook <keescook@chromium.org>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	kvm@vger.kernel.org, Szabolcs Nagy <Szabolcs.Nagy@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>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	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>,
	Ruben Ayrapetyan <Ruben.Ayrapetyan@arm.com>,
	Andrey Konovalov <andreyknvl@google.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 02/16] arm64: untag user pointers in access_ok and __uaccess_mask_ptr
Date: Mon, 10 Jun 2019 11:07:03 -0700	[thread overview]
Message-ID: <201906101106.3CA50745E3@keescook> (raw)
In-Reply-To: <20190610175326.GC25803@arrakis.emea.arm.com>

On Mon, Jun 10, 2019 at 06:53:27PM +0100, Catalin Marinas wrote:
> On Mon, Jun 03, 2019 at 06:55:04PM +0200, Andrey Konovalov wrote:
> > diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
> > index e5d5f31c6d36..9164ecb5feca 100644
> > --- a/arch/arm64/include/asm/uaccess.h
> > +++ b/arch/arm64/include/asm/uaccess.h
> > @@ -94,7 +94,7 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
> >  	return ret;
> >  }
> >  
> > -#define access_ok(addr, size)	__range_ok(addr, size)
> > +#define access_ok(addr, size)	__range_ok(untagged_addr(addr), size)
> 
> I'm going to propose an opt-in method here (RFC for now). We can't have
> a check in untagged_addr() since this is already used throughout the
> kernel for both user and kernel addresses (khwasan) but we can add one
> in __range_ok(). The same prctl() option will be used for controlling
> the precise/imprecise mode of MTE later on. We can use a TIF_ flag here
> assuming that this will be called early on and any cloned thread will
> inherit this.
> 
> Anyway, it's easier to paste some diff than explain but Vincenzo can
> fold them into his ABI patches that should really go together with
> these. I added a couple of MTE definitions for prctl() as an example,
> not used currently:
> 
> ------------------8<---------------------------------------------
> diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
> index fcd0e691b1ea..2d4cb7e4edab 100644
> --- a/arch/arm64/include/asm/processor.h
> +++ b/arch/arm64/include/asm/processor.h
> @@ -307,6 +307,10 @@ extern void __init minsigstksz_setup(void);
>  /* PR_PAC_RESET_KEYS prctl */
>  #define PAC_RESET_KEYS(tsk, arg)	ptrauth_prctl_reset_keys(tsk, arg)
>  
> +/* PR_UNTAGGED_UADDR prctl */
> +int untagged_uaddr_set_mode(unsigned long arg);
> +#define SET_UNTAGGED_UADDR_MODE(arg)	untagged_uaddr_set_mode(arg)
> +
>  /*
>   * For CONFIG_GCC_PLUGIN_STACKLEAK
>   *
> diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h
> index c285d1ce7186..89ce77773c49 100644
> --- a/arch/arm64/include/asm/thread_info.h
> +++ b/arch/arm64/include/asm/thread_info.h
> @@ -101,6 +101,7 @@ void arch_release_task_struct(struct task_struct *tsk);
>  #define TIF_SVE			23	/* Scalable Vector Extension in use */
>  #define TIF_SVE_VL_INHERIT	24	/* Inherit sve_vl_onexec across exec */
>  #define TIF_SSBD		25	/* Wants SSB mitigation */
> +#define TIF_UNTAGGED_UADDR	26
>  
>  #define _TIF_SIGPENDING		(1 << TIF_SIGPENDING)
>  #define _TIF_NEED_RESCHED	(1 << TIF_NEED_RESCHED)
> @@ -116,6 +117,7 @@ void arch_release_task_struct(struct task_struct *tsk);
>  #define _TIF_FSCHECK		(1 << TIF_FSCHECK)
>  #define _TIF_32BIT		(1 << TIF_32BIT)
>  #define _TIF_SVE		(1 << TIF_SVE)
> +#define _TIF_UNTAGGED_UADDR	(1 << TIF_UNTAGGED_UADDR)
>  
>  #define _TIF_WORK_MASK		(_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
>  				 _TIF_NOTIFY_RESUME | _TIF_FOREIGN_FPSTATE | \
> diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
> index 9164ecb5feca..54f5bbaebbc4 100644
> --- a/arch/arm64/include/asm/uaccess.h
> +++ b/arch/arm64/include/asm/uaccess.h
> @@ -73,6 +73,9 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
>  {
>  	unsigned long ret, limit = current_thread_info()->addr_limit;
>  
> +	if (test_thread_flag(TIF_UNTAGGED_UADDR))
> +		addr = untagged_addr(addr);
> +
>  	__chk_user_ptr(addr);
>  	asm volatile(
>  	// A + B <= C + 1 for all A,B,C, in four easy steps:
> @@ -94,7 +97,7 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si
>  	return ret;
>  }
>  
> -#define access_ok(addr, size)	__range_ok(untagged_addr(addr), size)
> +#define access_ok(addr, size)	__range_ok(addr, size)
>  #define user_addr_max			get_fs
>  
>  #define _ASM_EXTABLE(from, to)						\
> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
> index 3767fb21a5b8..fd191c5b92aa 100644
> --- a/arch/arm64/kernel/process.c
> +++ b/arch/arm64/kernel/process.c
> @@ -552,3 +552,18 @@ void arch_setup_new_exec(void)
>  
>  	ptrauth_thread_init_user(current);
>  }
> +
> +/*
> + * Enable the relaxed ABI allowing tagged user addresses into the kernel.
> + */
> +int untagged_uaddr_set_mode(unsigned long arg)
> +{
> +	if (is_compat_task())
> +		return -ENOTSUPP;
> +	if (arg)
> +		return -EINVAL;
> +
> +	set_thread_flag(TIF_UNTAGGED_UADDR);
> +
> +	return 0;
> +}

I think this should be paired with a flag clearing in copy_thread(),
yes? (i.e. each binary needs to opt in)

-- 
Kees Cook

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-06-10 18:07 UTC|newest]

Thread overview: 356+ 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 ` Andrey Konovalov
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 16:55   ` Andrey Konovalov
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:06       ` Andrey Konovalov
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: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 17:29           ` Christoph Hellwig
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-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-04 11:45               ` Andrey Konovalov
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-03 16:55   ` Andrey Konovalov
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-08  3:51     ` Kees Cook
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 [this message]
2019-06-10 18:07       ` Kees Cook
2019-06-10 18:07       ` Kees Cook
2019-06-10 18:07       ` keescook
2019-06-10 18:07       ` Kees Cook
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           ` keescook
2019-06-10 20:36           ` Kees Cook
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: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-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: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-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-03 16:55   ` Andrey Konovalov
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-08  3:48     ` Kees Cook
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-03 16:55   ` Andrey Konovalov
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-08  3:49     ` Kees Cook
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-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-03 16:55   ` Andrey Konovalov
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-08  3:51     ` Kees Cook
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 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-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-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-03 16:55   ` Andrey Konovalov
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-08  3:59     ` Kees Cook
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-03 16:55   ` Andrey Konovalov
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-08  4:00     ` Kees Cook
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-03 16:55   ` Andrey Konovalov
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-08  4:02     ` Kees Cook
2019-06-11 14:38     ` Andrey Konovalov
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-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-03 16:55   ` Andrey Konovalov
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-08  4:03     ` Kees Cook
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   ` Andrey Konovalov
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   ` Andrey Konovalov
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 16:55   ` Andrey Konovalov
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-03 17:46     ` Jason Gunthorpe
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:18       ` Andrey Konovalov
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:27         ` Jason Gunthorpe
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 12:45           ` Andrey Konovalov
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:02             ` Jason Gunthorpe
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-04 13:09               ` Andrey Konovalov
2019-06-12 11:01               ` Catalin Marinas
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-03 16:55   ` Andrey Konovalov
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-08  3:52     ` Kees Cook
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-03 16:55   ` Andrey Konovalov
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-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     ` keescook
2019-06-08  4:05     ` Kees Cook
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-03 16:55   ` Andrey Konovalov
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-08  3:58     ` Kees Cook
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-03 16:55   ` Andrey Konovalov
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-08  3:56     ` Kees Cook
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: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-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
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=201906101106.3CA50745E3@keescook \
    --to=keescook@chromium.org \
    --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=jens.wiklander@linaro. \
    --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.