Commit ea767143 authored by Andrey Vagin's avatar Andrey Vagin Committed by Pavel Emelyanov

tty: require stdin to be a terminal only if shell_job is set

Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
Acked-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 749116b4
...@@ -88,7 +88,7 @@ static int shmem_remap(void *old_addr, void *new_addr, unsigned long size) ...@@ -88,7 +88,7 @@ static int shmem_remap(void *old_addr, void *new_addr, unsigned long size)
return 0; return 0;
} }
static int crtools_prepare_shared(void) static int crtools_prepare_shared(struct cr_options *opts)
{ {
if (prepare_shared_fdinfo()) if (prepare_shared_fdinfo())
return -1; return -1;
...@@ -97,7 +97,7 @@ static int crtools_prepare_shared(void) ...@@ -97,7 +97,7 @@ static int crtools_prepare_shared(void)
if (collect_inet_sockets()) if (collect_inet_sockets())
return -1; return -1;
if (tty_prep_fds()) if (tty_prep_fds(opts))
return -1; return -1;
return 0; return 0;
...@@ -1258,7 +1258,7 @@ int cr_restore_tasks(pid_t pid, struct cr_options *opts) ...@@ -1258,7 +1258,7 @@ int cr_restore_tasks(pid_t pid, struct cr_options *opts)
if (prepare_pstree() < 0) if (prepare_pstree() < 0)
return -1; return -1;
if (crtools_prepare_shared() < 0) if (crtools_prepare_shared(opts) < 0)
return -1; return -1;
return restore_root_task(root_item, opts); return restore_root_task(root_item, opts);
......
...@@ -21,7 +21,7 @@ extern int tty_setup_slavery(void); ...@@ -21,7 +21,7 @@ extern int tty_setup_slavery(void);
extern int tty_verify_active_pairs(void); extern int tty_verify_active_pairs(void);
extern int tty_prep_fds(void); extern int tty_prep_fds(struct cr_options *opts);
extern void tty_fini_fds(void); extern void tty_fini_fds(void);
#endif /* __CR_TTY_H__ */ #endif /* __CR_TTY_H__ */
...@@ -1193,8 +1193,11 @@ int dump_tty(struct fd_parms *p, int lfd, const int fdinfo) ...@@ -1193,8 +1193,11 @@ int dump_tty(struct fd_parms *p, int lfd, const int fdinfo)
return do_dump_gen_file(p, lfd, &tty_ops, fdinfo); return do_dump_gen_file(p, lfd, &tty_ops, fdinfo);
} }
int tty_prep_fds(void) int tty_prep_fds(struct cr_options *opts)
{ {
if (!opts->shell_job)
return 0;
if (!isatty(STDIN_FILENO)) { if (!isatty(STDIN_FILENO)) {
pr_err("Standart stream is not a terminal, aborting\n"); pr_err("Standart stream is not a terminal, aborting\n");
return -1; return -1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment