• Jacob Satterfield's avatar
    selinux: hweight optimization in avtab_read_item · 9d140885
    Jacob Satterfield authored
    avtab_read_item() is a hot function called when reading each rule in a
    binary policydb. With the current Fedora policy and refpolicy, this
    function is called nearly 100,000 times per policy load.
    
    A single avtab node is only permitted to have a single specifier to
    describe the data it holds. As such, a check is performed to make sure
    only one specifier is set. Previously this was done via a for-loop.
    However, there is already an optimal function for finding the number of
    bits set (hamming weight) and on some architectures, dedicated
    instructions (popcount) which can be executed much more efficiently.
    
    Even when using -mcpu=generic on a x86-64 Fedora 38 VM, this commit
    results in a modest 2-4% speedup for policy loading due to a substantial
    reduction in the number of instructions executed.
    Signed-off-by: default avatarJacob Satterfield <jsatterfield.linux@gmail.com>
    Reviewed-by: default avatarStephen Smalley <stephen.smalley.work@gmail.com>
    Signed-off-by: default avatarPaul Moore <paul@paul-moore.com>
    9d140885
avtab.c 15.7 KB