initctl: check for kexec_loaded when reboot is requested through initctl
This commit is contained in:
parent
240fc26e03
commit
65457142f1
|
@ -93,6 +93,8 @@ static const char *translate_runlevel(int runlevel, bool *isolate) {
|
|||
for (i = 0; i < ELEMENTSOF(table); i++)
|
||||
if (table[i].runlevel == runlevel) {
|
||||
*isolate = table[i].isolate;
|
||||
if (runlevel == '6' && kexec_loaded())
|
||||
return SPECIAL_KEXEC_TARGET;
|
||||
return table[i].special;
|
||||
}
|
||||
|
||||
|
|
|
@ -4427,18 +4427,6 @@ static int parse_time_spec(const char *t, usec_t *_u) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool kexec_loaded(void) {
|
||||
bool loaded = false;
|
||||
char *s;
|
||||
|
||||
if (read_one_line_file("/sys/kernel/kexec_loaded", &s) >= 0) {
|
||||
if (s[0] == '1')
|
||||
loaded = true;
|
||||
free(s);
|
||||
}
|
||||
return loaded;
|
||||
}
|
||||
|
||||
static int shutdown_parse_argv(int argc, char *argv[]) {
|
||||
|
||||
enum {
|
||||
|
|
12
src/util.c
12
src/util.c
|
@ -5852,3 +5852,15 @@ static const char *const signal_table[] = {
|
|||
};
|
||||
|
||||
DEFINE_STRING_TABLE_LOOKUP(signal, int);
|
||||
|
||||
bool kexec_loaded(void) {
|
||||
bool loaded = false;
|
||||
char *s;
|
||||
|
||||
if (read_one_line_file("/sys/kernel/kexec_loaded", &s) >= 0) {
|
||||
if (s[0] == '1')
|
||||
loaded = true;
|
||||
free(s);
|
||||
}
|
||||
return loaded;
|
||||
}
|
||||
|
|
|
@ -504,4 +504,6 @@ int signal_from_string_try_harder(const char *s);
|
|||
extern int saved_argc;
|
||||
extern char **saved_argv;
|
||||
|
||||
bool kexec_loaded(void);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue