On 2024/9/2 20:16, Mathieu Desnoyers wrote: > On 2024-09-02 07:06, Jinjie Ruan wrote: >> sizeof(unsigned long) * 8 is the number of bits in an unsigned long >> variable, replace it with BITS_PER_LONG macro to make it simpler. > > An alternative would be: > > if (rcu_fanout_leaf < 2 || sizeof_field(struct rcu_node, qsmask) * > CHAR_BIT) { > > which would then tie the check to validated member type. But it's > slightly more verbose, so it's up to the maintainer really. Yes, it reflects the original purpose but it is too long. > > Thanks, > > Mathieu > >> >> Signed-off-by: Jinjie Ruan <ruanjinjie@xxxxxxxxxx> >> --- >> kernel/rcu/tree.c | 3 +-- >> 1 file changed, 1 insertion(+), 2 deletions(-) >> >> diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c >> index a60616e69b66..b48864df415c 100644 >> --- a/kernel/rcu/tree.c >> +++ b/kernel/rcu/tree.c >> @@ -5579,8 +5579,7 @@ void rcu_init_geometry(void) >> * Complain and fall back to the compile-time values if this >> * limit is exceeded. >> */ >> - if (rcu_fanout_leaf < 2 || >> - rcu_fanout_leaf > sizeof(unsigned long) * 8) { >> + if (rcu_fanout_leaf < 2 || rcu_fanout_leaf > BITS_PER_LONG) { >> rcu_fanout_leaf = RCU_FANOUT_LEAF; >> WARN_ON(1); >> return; >