]> Pileus Git - ~andy/linux/commit
x86: Replace assembly access_ok() with a C variant
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 27 Dec 2013 23:30:58 +0000 (15:30 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Sat, 28 Dec 2013 00:58:17 +0000 (16:58 -0800)
commitc5fe5d80680e2949ffe102180f5fc6cefc0d145f
treeca8b287deb7c2fc0167e31dd08de2f5397a33728
parent661c80192d21269c7fc566f1d547510b0c867677
x86: Replace assembly access_ok() with a C variant

It turns out that the assembly variant doesn't actually produce that
good code, presumably partly because it creates a long dependency
chain with no scheduling, and partly because we cannot get a flags
result out of gcc (which could be fixed with asm goto, but it turns
out not to be worth it.)

The C code allows gcc to schedule and generate multiple (easily
predictable) branches, and as a side benefit we can really optimize
the case where the size is constant.

Link: http://lkml.kernel.org/r/CA%2B55aFzPBdbfKovMT8Edr4SmE2_=%2BOKJFac9XW2awegogTkVTA@mail.gmail.com
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/include/asm/uaccess.h