aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatteo Croce <[email protected]>2020-12-15 20:46:53 -0800
committerLinus Torvalds <[email protected]>2020-12-15 22:46:19 -0800
commitf9a90501faac55ddbea93c1f73497857f1997227 (patch)
tree37a3b1d168877a6d6d3dd61a8d4eb217086175fe
parentd3c227978a130ee18716d3496cf82621d8cda28c (diff)
reboot: refactor and comment the cpu selection code
Small improvements to the code, without changing the way it works: - use a local variable, to avoid a small time lapse where reboot_cpu can have an invalid value - comment the code which is not easy to understand at a glance - merge two identical code blocks into one - replace pointer arithmetics with equivalent array syntax Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Matteo Croce <[email protected]> Cc: Arnd Bergmann <[email protected]> Cc: Fabian Frederick <[email protected]> Cc: Greg Kroah-Hartman <[email protected]> Cc: Guenter Roeck <[email protected]> Cc: Kees Cook <[email protected]> Cc: Mike Rapoport <[email protected]> Cc: Pavel Tatashin <[email protected]> Cc: Petr Mladek <[email protected]> Cc: Robin Holt <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r--kernel/reboot.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/kernel/reboot.c b/kernel/reboot.c
index 2a18b76ffc06..aa3bfd6c673b 100644
--- a/kernel/reboot.c
+++ b/kernel/reboot.c
@@ -553,20 +553,24 @@ static int __init reboot_setup(char *str)
break;
case 's':
- if (isdigit(*(str+1)))
- reboot_cpu = simple_strtoul(str+1, NULL, 0);
- else if (str[1] == 'm' && str[2] == 'p' &&
- isdigit(*(str+3)))
- reboot_cpu = simple_strtoul(str+3, NULL, 0);
- else
+ /*
+ * reboot_cpu is s[mp]#### with #### being the processor
+ * to be used for rebooting. Skip 's' or 'smp' prefix.
+ */
+ str += str[1] == 'm' && str[2] == 'p' ? 3 : 1;
+
+ if (isdigit(str[0])) {
+ int cpu = simple_strtoul(str, NULL, 0);
+
+ if (cpu >= num_possible_cpus()) {
+ pr_err("Ignoring the CPU number in reboot= option. "
+ "CPU %d exceeds possible cpu number %d\n",
+ cpu, num_possible_cpus());
+ break;
+ }
+ reboot_cpu = cpu;
+ } else
*mode = REBOOT_SOFT;
- if (reboot_cpu >= num_possible_cpus()) {
- pr_err("Ignoring the CPU number in reboot= option. "
- "CPU %d exceeds possible cpu number %d\n",
- reboot_cpu, num_possible_cpus());
- reboot_cpu = 0;
- break;
- }
break;
case 'g':