rcu: Reset rcu_fanout_leaf if out of bounds
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 4 Jun 2015 17:06:01 +0000 (10:06 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Fri, 17 Jul 2015 21:58:41 +0000 (14:58 -0700)
Currently if the rcu_fanout_leaf boot parameter is out of bounds (that
is, less than RCU_FANOUT_LEAF or greater than the number of bits in an
unsigned long), a warning is issued and execution continues with the
out-of-bounds value.  This can result in all manner of failures, so this
patch resets rcu_fanout_leaf to RCU_FANOUT_LEAF when an out-of-bounds
condition is detected.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/tree.c

index e53bbc53bcd5fae9cad85728672078406694e018..a2147d7b51c04aab30a593d4b2f82c6cbaa9c06e 100644 (file)
@@ -4103,6 +4103,7 @@ static void __init rcu_init_geometry(void)
         */
        if (rcu_fanout_leaf < RCU_FANOUT_LEAF ||
            rcu_fanout_leaf > sizeof(unsigned long) * 8) {
+               rcu_fanout_leaf = RCU_FANOUT_LEAF;
                WARN_ON(1);
                return;
        }