* Re: [PATCH 1/8] powerpc/uaccess: Add unsafe_copy_from_user
[not found] ` <20201015150159.28933-2-cmr@codefail.de>
@ 2020-10-16 6:54 ` Christoph Hellwig
2020-10-16 13:18 ` Christophe Leroy
0 siblings, 1 reply; 5+ messages in thread
From: Christoph Hellwig @ 2020-10-16 6:54 UTC (permalink / raw)
To: Christopher M. Riedl; +Cc: linuxppc-dev, linux-kernel, viro
On Thu, Oct 15, 2020 at 10:01:52AM -0500, Christopher M. Riedl wrote:
> Implement raw_copy_from_user_allowed() which assumes that userspace read
> access is open. Use this new function to implement raw_copy_from_user().
> Finally, wrap the new function to follow the usual "unsafe_" convention
> of taking a label argument. The new raw_copy_from_user_allowed() calls
> __copy_tofrom_user() internally, but this is still safe to call in user
> access blocks formed with user_*_access_begin()/user_*_access_end()
> since asm functions are not instrumented for tracing.
Please also add a fallback unsafe_copy_from_user to linux/uaccess.h
so this can be used as a generic API.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 3/8] powerpc: Mark functions called inside uaccess blocks w/ 'notrace'
[not found] ` <20201015150159.28933-4-cmr@codefail.de>
@ 2020-10-16 6:56 ` Christoph Hellwig
2020-10-16 9:41 ` Peter Zijlstra
0 siblings, 1 reply; 5+ messages in thread
From: Christoph Hellwig @ 2020-10-16 6:56 UTC (permalink / raw)
To: Christopher M. Riedl; +Cc: linuxppc-dev, linux-kernel, peterz
On Thu, Oct 15, 2020 at 10:01:54AM -0500, Christopher M. Riedl wrote:
> Functions called between user_*_access_begin() and user_*_access_end()
> should be either inlined or marked 'notrace' to prevent leaving
> userspace access exposed. Mark any such functions relevant to signal
> handling so that subsequent patches can call them inside uaccess blocks.
I don't think running this much code with uaccess enabled is a good
idea. Please refactor the code to reduce the criticial sections with
uaccess enabled.
Btw, does powerpc already have the objtool validation that we don't
accidentally jump out of unsafe uaccess critical sections?
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 3/8] powerpc: Mark functions called inside uaccess blocks w/ 'notrace'
2020-10-16 6:56 ` [PATCH 3/8] powerpc: Mark functions called inside uaccess blocks w/ 'notrace' Christoph Hellwig
@ 2020-10-16 9:41 ` Peter Zijlstra
2020-10-20 7:34 ` Michael Ellerman
0 siblings, 1 reply; 5+ messages in thread
From: Peter Zijlstra @ 2020-10-16 9:41 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: Christopher M. Riedl, linuxppc-dev, linux-kernel
On Fri, Oct 16, 2020 at 07:56:16AM +0100, Christoph Hellwig wrote:
> On Thu, Oct 15, 2020 at 10:01:54AM -0500, Christopher M. Riedl wrote:
> > Functions called between user_*_access_begin() and user_*_access_end()
> > should be either inlined or marked 'notrace' to prevent leaving
> > userspace access exposed. Mark any such functions relevant to signal
> > handling so that subsequent patches can call them inside uaccess blocks.
>
> I don't think running this much code with uaccess enabled is a good
> idea. Please refactor the code to reduce the criticial sections with
> uaccess enabled.
>
> Btw, does powerpc already have the objtool validation that we don't
> accidentally jump out of unsafe uaccess critical sections?
It does not, there was some effort on that a while ago, but I suspect
they're waiting for the ARM64 effort to land and build on that.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/8] powerpc/uaccess: Add unsafe_copy_from_user
2020-10-16 6:54 ` [PATCH 1/8] powerpc/uaccess: Add unsafe_copy_from_user Christoph Hellwig
@ 2020-10-16 13:18 ` Christophe Leroy
0 siblings, 0 replies; 5+ messages in thread
From: Christophe Leroy @ 2020-10-16 13:18 UTC (permalink / raw)
To: Christoph Hellwig, Christopher M. Riedl; +Cc: linuxppc-dev, linux-kernel, viro
Le 16/10/2020 à 08:54, Christoph Hellwig a écrit :
> On Thu, Oct 15, 2020 at 10:01:52AM -0500, Christopher M. Riedl wrote:
>> Implement raw_copy_from_user_allowed() which assumes that userspace read
>> access is open. Use this new function to implement raw_copy_from_user().
>> Finally, wrap the new function to follow the usual "unsafe_" convention
>> of taking a label argument. The new raw_copy_from_user_allowed() calls
>> __copy_tofrom_user() internally, but this is still safe to call in user
>> access blocks formed with user_*_access_begin()/user_*_access_end()
>> since asm functions are not instrumented for tracing.
>
> Please also add a fallback unsafe_copy_from_user to linux/uaccess.h
> so this can be used as a generic API.
>
I guess this can be done in a separate patch independant of that series ?
Christophe
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 3/8] powerpc: Mark functions called inside uaccess blocks w/ 'notrace'
2020-10-16 9:41 ` Peter Zijlstra
@ 2020-10-20 7:34 ` Michael Ellerman
0 siblings, 0 replies; 5+ messages in thread
From: Michael Ellerman @ 2020-10-20 7:34 UTC (permalink / raw)
To: Peter Zijlstra, Christoph Hellwig
Cc: linuxppc-dev, linux-kernel, Christopher M. Riedl
Peter Zijlstra <peterz@infradead.org> writes:
> On Fri, Oct 16, 2020 at 07:56:16AM +0100, Christoph Hellwig wrote:
>> On Thu, Oct 15, 2020 at 10:01:54AM -0500, Christopher M. Riedl wrote:
>> > Functions called between user_*_access_begin() and user_*_access_end()
>> > should be either inlined or marked 'notrace' to prevent leaving
>> > userspace access exposed. Mark any such functions relevant to signal
>> > handling so that subsequent patches can call them inside uaccess blocks.
>>
>> I don't think running this much code with uaccess enabled is a good
>> idea. Please refactor the code to reduce the criticial sections with
>> uaccess enabled.
>>
>> Btw, does powerpc already have the objtool validation that we don't
>> accidentally jump out of unsafe uaccess critical sections?
>
> It does not, there was some effort on that a while ago, but I suspect
> they're waiting for the ARM64 effort to land and build on that.
Right, we don't have objtool support.
We would definitely like objtool support at least for this uaccess
checking, I'm sure we have some escapes.
There was someone working on it in their own-time but last I heard that
was still WIP.
I didn't realise the ARM64 support was still not merged, so yeah having
that land first would probably simplify things, but we still need
someone who has time to work on it.
cheers
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-10-20 7:34 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20201015150159.28933-1-cmr@codefail.de>
[not found] ` <20201015150159.28933-2-cmr@codefail.de>
2020-10-16 6:54 ` [PATCH 1/8] powerpc/uaccess: Add unsafe_copy_from_user Christoph Hellwig
2020-10-16 13:18 ` Christophe Leroy
[not found] ` <20201015150159.28933-4-cmr@codefail.de>
2020-10-16 6:56 ` [PATCH 3/8] powerpc: Mark functions called inside uaccess blocks w/ 'notrace' Christoph Hellwig
2020-10-16 9:41 ` Peter Zijlstra
2020-10-20 7:34 ` Michael Ellerman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome