reboot: remove cf9_safe from allowed types and rename cf9_force
authorMatteo Croce <mcroce@microsoft.com>
Wed, 16 Dec 2020 04:47:00 +0000 (20:47 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 16 Dec 2020 06:46:19 +0000 (22:46 -0800)
BOOT_CF9_SAFE_STR is an internal value used only by the x86 code and it's
not possible to set it from userspace.

Remove it, and rename 'cf9_force' to 'pci', so to make it coherent with
the kernel command line reboot= option.

Tested with this script:

cd /sys/kernel/reboot/

for i in cold warm hard soft gpio; do
echo $i >mode
read j <mode
[ $i = $j ] || echo "mode $i != $j"
done

for i in bios acpi kbd triple efi pci; do
echo $i >type
read j <type
[ $i = $j ] || echo "type $i != $j"
done

for i in $(seq 0 $(nproc --ignore=1)); do
echo $i >cpu
read j <cpu
[ $i = $j ] || echo "cpu $i != $j"
done

for i in 0 1; do
echo $i >force
read j <force
[ $i = $j ] || echo "force $i != $j"
done

Link: https://lkml.kernel.org/r/20201113015900.543923-1-mcroce@linux.microsoft.com
Fixes: eab8da48579d ("reboot: allow to specify reboot mode via sysfs")
Signed-off-by: Matteo Croce <mcroce@microsoft.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Kees Cook <keescook@chromium.org>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Nathan Chancellor <natechancellor@gmail.com>
Cc: Pavel Tatashin <pasha.tatashin@soleen.com>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Tyler Hicks <tyhicks@linux.microsoft.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/reboot.c

index 940cbb7..769ad55 100644 (file)
@@ -615,8 +615,7 @@ __setup("reboot=", reboot_setup);
 #define BOOT_BIOS_STR          "bios"
 #define BOOT_ACPI_STR          "acpi"
 #define BOOT_EFI_STR           "efi"
-#define BOOT_CF9_FORCE_STR     "cf9_force"
-#define BOOT_CF9_SAFE_STR      "cf9_safe"
+#define BOOT_PCI_STR           "pci"
 
 static ssize_t mode_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
 {
@@ -688,10 +687,7 @@ static ssize_t type_show(struct kobject *kobj, struct kobj_attribute *attr, char
                val = BOOT_EFI_STR;
                break;
        case BOOT_CF9_FORCE:
-               val = BOOT_CF9_FORCE_STR;
-               break;
-       case BOOT_CF9_SAFE:
-               val = BOOT_CF9_SAFE_STR;
+               val = BOOT_PCI_STR;
                break;
        default:
                val = REBOOT_UNDEFINED_STR;
@@ -715,10 +711,8 @@ static ssize_t type_store(struct kobject *kobj, struct kobj_attribute *attr,
                reboot_type = BOOT_ACPI;
        else if (!strncmp(buf, BOOT_EFI_STR, strlen(BOOT_EFI_STR)))
                reboot_type = BOOT_EFI;
-       else if (!strncmp(buf, BOOT_CF9_FORCE_STR, strlen(BOOT_CF9_FORCE_STR)))
+       else if (!strncmp(buf, BOOT_PCI_STR, strlen(BOOT_PCI_STR)))
                reboot_type = BOOT_CF9_FORCE;
-       else if (!strncmp(buf, BOOT_CF9_SAFE_STR, strlen(BOOT_CF9_SAFE_STR)))
-               reboot_type = BOOT_CF9_SAFE;
        else
                return -EINVAL;