core: confirm_spawn: always accept units with same_pgrp set for now
For some reasons units remaining in the same process group as PID 1 (same_pgrp=true) fail to acquire the console even if it's not taken by anyone. So always accept for units with same_pgrp set for now.
This commit is contained in:
parent
63d77c9254
commit
c891efaf8a
|
@ -2385,7 +2385,7 @@ static int exec_child(
|
||||||
|
|
||||||
exec_context_tty_reset(context, params);
|
exec_context_tty_reset(context, params);
|
||||||
|
|
||||||
if (!manager_is_confirm_spawn_disabled(unit->manager)) {
|
if (unit_shall_confirm_spawn(unit)) {
|
||||||
const char *vc = params->confirm_spawn;
|
const char *vc = params->confirm_spawn;
|
||||||
_cleanup_free_ char *cmdline = NULL;
|
_cleanup_free_ char *cmdline = NULL;
|
||||||
|
|
||||||
|
|
|
@ -1515,6 +1515,17 @@ int unit_start_limit_test(Unit *u) {
|
||||||
return emergency_action(u->manager, u->start_limit_action, u->reboot_arg, "unit failed");
|
return emergency_action(u->manager, u->start_limit_action, u->reboot_arg, "unit failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool unit_shall_confirm_spawn(Unit *u) {
|
||||||
|
|
||||||
|
if (manager_is_confirm_spawn_disabled(u->manager))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/* For some reasons units remaining in the same process group
|
||||||
|
* as PID 1 fail to acquire the console even if it's not used
|
||||||
|
* by any process. So skip the confirmation question for them. */
|
||||||
|
return !unit_get_exec_context(u)->same_pgrp;
|
||||||
|
}
|
||||||
|
|
||||||
/* Errors:
|
/* Errors:
|
||||||
* -EBADR: This unit type does not support starting.
|
* -EBADR: This unit type does not support starting.
|
||||||
* -EALREADY: Unit is already started.
|
* -EALREADY: Unit is already started.
|
||||||
|
|
|
@ -654,6 +654,8 @@ void unit_notify_user_lookup(Unit *u, uid_t uid, gid_t gid);
|
||||||
int unit_set_invocation_id(Unit *u, sd_id128_t id);
|
int unit_set_invocation_id(Unit *u, sd_id128_t id);
|
||||||
int unit_acquire_invocation_id(Unit *u);
|
int unit_acquire_invocation_id(Unit *u);
|
||||||
|
|
||||||
|
bool unit_shall_confirm_spawn(Unit *u);
|
||||||
|
|
||||||
/* Macros which append UNIT= or USER_UNIT= to the message */
|
/* Macros which append UNIT= or USER_UNIT= to the message */
|
||||||
|
|
||||||
#define log_unit_full(unit, level, error, ...) \
|
#define log_unit_full(unit, level, error, ...) \
|
||||||
|
|
Loading…
Reference in a new issue