• Linus Torvalds's avatar
    selinux: de-crapify avc cache stat code generation · 044aea9b
    Linus Torvalds authored
    You can turn off the avc cache stats, but distributions seem to not do
    that (perhaps because several performance tuning how-to's talk about the
    avc cache statistics).
    
    Which is sad, because the code it generates is truly horrendous, with
    the statistics update being sandwitched between get_cpu/put_cpu which in
    turn causes preemption disables etc.  We're talking ten+ instructions
    just to increment a per-cpu variable in some pretty hot code.
    
    Fix the craziness by just using 'this_cpu_inc()' instead.  Suddenly we
    only need a single 'inc' instruction to increment the statistics.  This
    is quite noticeable in the incredibly hot avc_has_perm_noaudit()
    function (which triggers all the statistics by virtue of doing an
    avc_lookup() call).
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    044aea9b
avc.c 21.7 KB