Thread (89 messages) 89 messages, 18 authors, 2017-05-13

[PATCH v9 1/4] syscalls: Verify address limit before returning to user-mode

From: luto@kernel.org (Andy Lutomirski)
Date: 2017-05-12 23:16:22
Also in: linux-api, linux-s390, lkml

On Mon, May 8, 2017 at 1:48 PM, Al Viro [off-list ref] wrote:
On Mon, May 08, 2017 at 04:06:35PM +0200, Jann Horn wrote:
quoted
I think Kees might be talking about
https://bugs.chromium.org/p/project-zero/issues/detail?id=822, fixed in
commit e6978e4bf181fb3b5f8cb6f71b4fe30fbf1b655c. The issue was that
perf code that can run in pretty much any context called access_ok().
And that commit has *NOT* solved the problem.  perf_callchain_user()
can be called synchronously, without passing through that code.
Tracepoint shite...

That set_fs() should be done in get_perf_callchain(), just around the call of
perf_callchain_user().  Along with pagefault_disable(), actually.
Even that's not quite enough because of a different issue: perf nmis
can hit during scheduling or when we're in lazy mm, leading to the
entirely wrong set of page tables being used.  We need
nmi_uaccess_begin() and nmi_uaccess_end(), and the former needs to be
allowed to fail.

AFAIK this isn't presently a security problem because it mainly
affects kernel threads, and you need to be root to profile them, but
maybe there's some race where it does matter.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help