Skip to content

Commit

Permalink
kernel/reboot: move reboot sysctls to its own file
Browse files Browse the repository at this point in the history
kernel/sysctl.c is a kitchen sink where everyone leaves their dirty
dishes, this makes it very difficult to maintain.

To help with this maintenance let's start by moving sysctls to places
where they actually belong.  The proc sysctl maintainers do not want to
know what sysctl knobs you wish to add for your own piece of code, we
just care about the core logic.

All filesystem syctls now get reviewed by fs folks. This commit
follows the commit of fs, move the poweroff_cmd and ctrl-alt-del
sysctls to its own file, kernel/reboot.c.

Signed-off-by: tangmeng <tangmeng@uniontech.com>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
  • Loading branch information
imtangmeng authored and mcgrof committed Apr 6, 2022
1 parent 8a04414 commit 06d1776
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 20 deletions.
4 changes: 0 additions & 4 deletions include/linux/reboot.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,8 @@ extern void kernel_restart(char *cmd);
extern void kernel_halt(void);
extern void kernel_power_off(void);

extern int C_A_D; /* for sysctl */
void ctrl_alt_del(void);

#define POWEROFF_CMD_PATH_LEN 256
extern char poweroff_cmd[POWEROFF_CMD_PATH_LEN];

extern void orderly_poweroff(bool force);
extern void orderly_reboot(void);
void hw_protection_shutdown(const char *reason, int ms_until_forced);
Expand Down
34 changes: 32 additions & 2 deletions kernel/reboot.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
* this indicates whether you can reboot with ctrl-alt-del: the default is yes
*/

int C_A_D = 1;
static int C_A_D = 1;
struct pid *cad_pid;
EXPORT_SYMBOL(cad_pid);

Expand Down Expand Up @@ -417,9 +417,37 @@ void ctrl_alt_del(void)
kill_cad_pid(SIGINT, 1);
}

char poweroff_cmd[POWEROFF_CMD_PATH_LEN] = "/sbin/poweroff";
#define POWEROFF_CMD_PATH_LEN 256
static char poweroff_cmd[POWEROFF_CMD_PATH_LEN] = "/sbin/poweroff";
static const char reboot_cmd[] = "/sbin/reboot";

#ifdef CONFIG_SYSCTL
static struct ctl_table kern_reboot_table[] = {
{
.procname = "poweroff_cmd",
.data = &poweroff_cmd,
.maxlen = POWEROFF_CMD_PATH_LEN,
.mode = 0644,
.proc_handler = proc_dostring,
},
{
.procname = "ctrl-alt-del",
.data = &C_A_D,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{ }
};

static void __init kernel_reboot_sysctls_init(void)
{
register_sysctl_init("kernel", kern_reboot_table);
}
#else
#define kernel_reboot_sysctls_init() do { } while (0)
#endif /* CONFIG_SYSCTL */

static int run_cmd(const char *cmd)
{
char **argv;
Expand Down Expand Up @@ -886,6 +914,8 @@ static int __init reboot_ksysfs_init(void)
return ret;
}

kernel_reboot_sysctls_init();

return 0;
}
late_initcall(reboot_ksysfs_init);
Expand Down
14 changes: 0 additions & 14 deletions kernel/sysctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -1798,13 +1798,6 @@ static struct ctl_table kern_table[] = {
.proc_handler = proc_dointvec,
},
#endif
{
.procname = "ctrl-alt-del",
.data = &C_A_D,
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
#ifdef CONFIG_FUNCTION_TRACER
{
.procname = "ftrace_enabled",
Expand Down Expand Up @@ -2111,13 +2104,6 @@ static struct ctl_table kern_table[] = {
.proc_handler = proc_dointvec,
},
#endif
{
.procname = "poweroff_cmd",
.data = &poweroff_cmd,
.maxlen = POWEROFF_CMD_PATH_LEN,
.mode = 0644,
.proc_handler = proc_dostring,
},
#ifdef CONFIG_KEYS
{
.procname = "keys",
Expand Down

0 comments on commit 06d1776

Please sign in to comment.