aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-03-31 10:58:08 -0700
committerZiyan <jaraidaniel@gmail.com>2016-01-17 20:28:12 +0100
commit02ce63ccc9b327ab1a1e31c06b545ff9c9129435 (patch)
treee3b5dd7ce29d898ba94f6a3df2ab84d54fb00cde /fs
parent1367c13852441d5506e193daaa9358d02d0c78dc (diff)
downloadkernel_samsung_tuna-02ce63ccc9b327ab1a1e31c06b545ff9c9129435.zip
kernel_samsung_tuna-02ce63ccc9b327ab1a1e31c06b545ff9c9129435.tar.gz
kernel_samsung_tuna-02ce63ccc9b327ab1a1e31c06b545ff9c9129435.tar.bz2
selinux: don't inline slow-path code into avc_has_perm_noaudit()
The selinux AVC paths remain some of the hottest (and deepest) codepaths at filename lookup time, and we make it worse by having the slow path cases take up I$ and stack space even when they don't trigger. Gcc tends to always want to inline functions that are just called once - never mind that this might make for slower and worse code in the caller. So this tries to improve on it a bit by making the slow-path cases explicitly separate functions that are marked noinline, causing gcc to at least no longer allocate stack space for them unless they are actually called. It also seems to help register allocation a tiny bit, since gcc now doesn't take the slow case code into account. Uninlining the slow path may also allow us to inline the remaining hot path into the one caller that actually matters: avc_has_perm_flags(). I'll have to look at that separately, but both avc_audit() and avc_has_perm_noaudit() are now small and lean enough that inlining them may make sense. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dan Trifan <jimsth@gmail.com>
Diffstat (limited to 'fs')
0 files changed, 0 insertions, 0 deletions