Message ID | 20230818151220.166215-3-cgzones@googlemail.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Paul Moore |
Headers | show |
Series | [1/6] selinux: print sum of chain lengths^2 for hash tables | expand |
On Fri, Aug 18, 2023 at 11:12 AM Christian Göttsche <cgzones@googlemail.com> wrote: > > 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 <cgzones@googlemail.com> Reviewed-by: Stephen Smalley <stephen.smalley.work@gmail.com>
On Aug 18, 2023 Stephen Smalley <stephen.smalley.work@gmail.com> wrote: > > 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 <cgzones@googlemail.com> > Reviewed-by: Stephen Smalley <stephen.smalley.work@gmail.com> > --- > security/selinux/ss/avtab.c | 8 +------- > 1 file changed, 1 insertion(+), 7 deletions(-) Much nicer, thanks. Merged into selinux/next. -- paul-moore.com
diff --git a/security/selinux/ss/avtab.c b/security/selinux/ss/avtab.c index 955cfe495606..1d1ffe085b35 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;
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 <cgzones@googlemail.com> --- security/selinux/ss/avtab.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-)