From: Christian Göttsche Date: Fri, 18 Aug 2023 15:12:15 +0000 (+0200) Subject: selinux: simplify avtab slot calculation X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=7969ba577636a83553baf95882eb310b39e1c742;p=linux.git selinux: simplify avtab slot calculation Instead of dividing by 8 and then performing log2 by hand, use a more readable calculation. The behavior of rounddown_pow_of_two() for an input of 0 is undefined, so handle that case and small values manually to achieve the same results. Signed-off-by: Christian Göttsche Reviewed-by: Stephen Smalley Signed-off-by: Paul Moore --- diff --git a/security/selinux/ss/avtab.c b/security/selinux/ss/avtab.c index 955cfe4956067..1d1ffe085b35c 100644 --- a/security/selinux/ss/avtab.c +++ b/security/selinux/ss/avtab.c @@ -298,13 +298,7 @@ int avtab_alloc(struct avtab *h, u32 nrules) u32 nslot = 0; if (nrules != 0) { - u32 shift = 1; - u32 work = nrules >> 3; - while (work) { - work >>= 1; - shift++; - } - nslot = 1 << shift; + nslot = nrules > 3 ? rounddown_pow_of_two(nrules / 2) : 2; if (nslot > MAX_AVTAB_HASH_BUCKETS) nslot = MAX_AVTAB_HASH_BUCKETS;