Hello community, here is the log from the commit of package plymouth for openSUSE:Factory checked in at 2013-06-13 20:31:08 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/plymouth (Old) and /work/SRC/openSUSE:Factory/.plymouth.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "plymouth" Changes: -------- --- /work/SRC/openSUSE:Factory/plymouth/plymouth.changes 2013-05-14 07:11:35.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.plymouth.new/plymouth.changes 2013-06-13 20:31:10.000000000 +0200 @@ -1,0 +2,12 @@ +Tue Jun 11 16:09:57 UTC 2013 - [email protected] + +- Add plymouth-close: do not try to close negative fd. +- Add plymouth-close-unredirect.patch: do not leak fd when stopping + redirection of /dev/console (bnc#811185) +- Add plymouth-redirect-null.patch: redirect plymouth standard io + to /dev/null (bnc#811185) +- Add plymouth-exit-code.patch: ignore exit code in ExecStartPost. +- Add plymouth-terminal-session-close.patch: do no try to close + terminal session fd if already closed. + +------------------------------------------------------------------- New: ---- plymouth-close-unredirect.patch plymouth-close.patch plymouth-exit-code.patch plymouth-redirect-null.patch plymouth-terminal-session-close.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ plymouth.spec ++++++ --- /var/tmp/diff_new_pack.j33iLs/_old 2013-06-13 20:31:11.000000000 +0200 +++ /var/tmp/diff_new_pack.j33iLs/_new 2013-06-13 20:31:11.000000000 +0200 @@ -43,6 +43,16 @@ Patch10: 0001-Some-greenish-openSUSE-colors.patch # PATCH-OPENSUSE -- plymouth-correct-runtime-dir.patch [email protected] -- make sure the runtime directory is /run and not /var/run Patch16: plymouth-correct-runtime-dir.patch +# PATCH-FIX-UPSTREAM plymouth-close.patch [email protected] -- do not try to close negative fd +Patch17: plymouth-close.patch +# PATCH-FIX-UPSTREAM plymouth-close-deactivate.patch bnc#811185 [email protected] -- close stdout/stderr on deactivate +Patch18: plymouth-close-unredirect.patch +# PATCH-FIX-UPSTREAM plymouth-redirect-null.patch bnc#811185 [email protected] -- redirect standard io to /dev/null +Patch19: plymouth-redirect-null.patch +# PATCH-FIX-UPSTREAM plymouth-exit-code.patch [email protected] -- ensure all exit code are ignored in ExecStartPost +Patch20: plymouth-exit-code.patch +# PATCH-FIX-UPSTREAM plymouth-terminal-session-close.patch [email protected] -- do not close already closed terminal session fd +Patch21: plymouth-terminal-session-close.patch BuildRequires: automake BuildRequires: kernel-headers BuildRequires: libtool @@ -314,6 +324,11 @@ %patch9 -p0 %patch10 -p1 %patch16 -p1 +%patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 # replace builddate with patch0date sed -i "s/__DATE__/\"$(stat -c %y %{_sourcedir}/%{name}.changes)\"/" src/main.c ++++++ plymouth-close-unredirect.patch ++++++ >From 41560df672d0aeb954874b6d0aa81849ab35ca71 Mon Sep 17 00:00:00 2001 From: Ray Strode <[email protected]> Date: Mon, 10 Jun 2013 10:44:56 -0400 Subject: [PATCH] terminal-session: plug /dev/console fd leak When we stop redirecting console messages, we temporarly open /dev/console. We don't ever close it. This commit fixes that. --- src/libply/ply-terminal-session.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libply/ply-terminal-session.c b/src/libply/ply-terminal-session.c index 3d43709..e7377e9 100644 --- a/src/libply/ply-terminal-session.c +++ b/src/libply/ply-terminal-session.c @@ -213,8 +213,12 @@ ply_terminal_session_unredirect_console (ply_terminal_session_t *session) assert (session->console_is_redirected); fd = open ("/dev/console", O_RDWR | O_NOCTTY); - if (fd >= 0) + if (fd >= 0) { ioctl (fd, TIOCCONS); + close (fd); + } else { + ply_trace ("couldn't open /dev/console to stop redirecting it: %m"); + } session->console_is_redirected = false; } -- 1.8.1.4 ++++++ plymouth-close.patch ++++++ >From 5784c8ff0c425b0948b653541c58fb8493515aa7 Mon Sep 17 00:00:00 2001 From: Ray Strode <[email protected]> Date: Thu, 6 Jun 2013 10:08:55 -0400 Subject: [PATCH] logger: don't close already logger if already closed This prevents close(-1) from showing up in strace --- src/libply/ply-logger.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libply/ply-logger.c b/src/libply/ply-logger.c index 5ea0b5e..ec5b6e5 100644 --- a/src/libply/ply-logger.c +++ b/src/libply/ply-logger.c @@ -357,6 +357,9 @@ ply_logger_close_file (ply_logger_t *logger) { assert (logger != NULL); + if (logger->output_fd < 0) + return; + close (logger->output_fd); ply_logger_set_output_fd (logger, -1); } -- 1.8.1.4 ++++++ plymouth-exit-code.patch ++++++ >From 95a4fd9cb721f3e8355a944db85462ef15603e1f Mon Sep 17 00:00:00 2001 From: Frederic Crozat <[email protected]> Date: Mon, 10 Jun 2013 18:54:47 +0200 Subject: [PATCH] systemd: make sure to ignore all exit codes in ExecStartPost --- systemd-units/plymouth-start.service.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: plymouth-0.8.8_git201304161248/systemd-units/plymouth-start.service.in =================================================================== --- plymouth-0.8.8_git201304161248.orig/systemd-units/plymouth-start.service.in +++ plymouth-0.8.8_git201304161248/systemd-units/plymouth-start.service.in @@ -8,7 +8,7 @@ ConditionKernelCommandLine=!plymouth.ena [Service] ExecStart=@PLYMOUTH_DAEMON_DIR@/plymouthd --mode=boot --pid-file=@plymouthruntimedir@/pid --attach-to-session -ExecStartPost=-@UDEVADM@ settle --timeout=30 --exit-if-exists=/sys/class/drm/card0/dev ; @UDEVADM@ settle --timeout=30 --exit-if-exists=/sys/class/graphics/fb0/dev ; @PLYMOUTH_CLIENT_DIR@/plymouth show-splash +ExecStartPost=-@UDEVADM@ settle --timeout=30 --exit-if-exists=/sys/class/drm/card0/dev ; -@UDEVADM@ settle --timeout=30 --exit-if-exists=/sys/class/graphics/fb0/dev ; -@PLYMOUTH_CLIENT_DIR@/plymouth show-splash Type=forking KillMode=none SendSIGKILL=no ++++++ plymouth-redirect-null.patch ++++++ >From 0d610f91e2bfc85f2e9a4c037adc91306e4faf62 Mon Sep 17 00:00:00 2001 From: Frederic Crozat <[email protected]> Date: Mon, 10 Jun 2013 18:44:08 +0200 Subject: [PATCH] main: redirect standard io to /dev/null do not redirect standard io to console tty anymore, it can cause issue with Xorg grabbing tty (https://bugzilla.novell.com/show_bug.cgi?id=811185). Initial patch by Ray Strode --- src/main.c | 87 +++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 55 insertions(+), 32 deletions(-) diff --git a/src/main.c b/src/main.c index e0d087c..2a9c84d 100644 --- a/src/main.c +++ b/src/main.c @@ -616,7 +616,7 @@ get_cache_file_for_mode (ply_mode_t mode) filename = NULL; break; default: - fprintf (stderr, "Unhandled case in %s line %d\n", __FILE__, __LINE__); + ply_error ("Unhandled case in %s line %d\n", __FILE__, __LINE__); abort (); break; } @@ -640,7 +640,7 @@ get_log_file_for_mode (ply_mode_t mode) filename = _PATH_DEVNULL; break; default: - fprintf (stderr, "Unhandled case in %s line %d\n", __FILE__, __LINE__); + ply_error ("Unhandled case in %s line %d\n", __FILE__, __LINE__); abort (); break; } @@ -664,7 +664,7 @@ get_log_spool_file_for_mode (ply_mode_t mode) filename = NULL; break; default: - fprintf (stderr, "Unhandled case in %s line %d\n", __FILE__, __LINE__); + ply_error ("Unhandled case in %s line %d\n", __FILE__, __LINE__); abort (); break; } @@ -1098,6 +1098,13 @@ deactivate_splash (state_t *state) ply_terminal_stop_watching_for_vt_changes (state->local_console_terminal); ply_terminal_set_buffered_input (state->local_console_terminal); ply_terminal_ignore_mode_changes (state->local_console_terminal, true); + ply_terminal_close (state->local_console_terminal); + } + + /* do not let any tty opened where we could write after deactivate */ + if (command_line_has_argument (state->kernel_command_line, "plymouth.debug")) + { + ply_logger_close_file (ply_logger_get_error_default ()); } state->is_inactive = true; @@ -1191,6 +1198,7 @@ on_reactivate (state_t *state) if (state->local_console_terminal != NULL) { + ply_terminal_open (state->local_console_terminal); ply_terminal_watch_for_vt_changes (state->local_console_terminal); ply_terminal_set_unbuffered_input (state->local_console_terminal); ply_terminal_ignore_mode_changes (state->local_console_terminal, false); @@ -1890,6 +1898,33 @@ check_verbosity (state_t *state) ply_logger_set_output_fd (ply_logger_get_error_default (), fd); } free (stream_copy); + } else { + const char* device; + char *file; + + if (state->kernel_console_tty != NULL) + device = state->kernel_console_tty; + else + device = state->default_tty; + + ply_trace ("redirecting debug output to %s", device); + + if (strncmp (device, "/dev/", strlen ("/dev/")) == 0) + file = strdup (device); + else + asprintf (&file, "/dev/%s", device); + + fd = open (file, O_RDWR | O_APPEND); + + if (fd < 0) + { + ply_trace ("could not redirected debug output to %s: %m", device); + } + else { + ply_logger_set_output_fd (ply_logger_get_error_default (), fd); + } + + free (file); } } else @@ -2157,21 +2192,11 @@ check_for_consoles (state_t *state, } static bool -redirect_standard_io_to_device (const char *device) +redirect_standard_io_to_dev_null (void) { int fd; - char *file; - ply_trace ("redirecting stdio to %s", device); - - if (strncmp (device, "/dev/", strlen ("/dev/")) == 0) - file = strdup (device); - else - asprintf (&file, "/dev/%s", device); - - fd = open (file, O_RDWR | O_APPEND); - - free (file); + fd = open ("/dev/null", O_RDWR | O_APPEND); if (fd < 0) return false; @@ -2214,19 +2239,6 @@ initialize_environment (state_t *state) if (!get_kernel_command_line (state)) return false; - check_verbosity (state); - check_logging (state); - - ply_trace ("source built on %s", __DATE__); - - state->keystroke_triggers = ply_list_new (); - state->entry_triggers = ply_list_new (); - state->entry_buffer = ply_buffer_new(); - state->pixel_displays = ply_list_new (); - state->text_displays = ply_list_new (); - state->messages = ply_list_new (); - state->keyboard = NULL; - if (!state->default_tty) { if (state->mode == PLY_MODE_SHUTDOWN) @@ -2247,12 +2259,23 @@ initialize_environment (state_t *state) } } + check_verbosity (state); + check_logging (state); + + ply_trace ("source built on %s", __DATE__); + + state->keystroke_triggers = ply_list_new (); + state->entry_triggers = ply_list_new (); + state->entry_buffer = ply_buffer_new(); + state->pixel_displays = ply_list_new (); + state->text_displays = ply_list_new (); + state->messages = ply_list_new (); + state->keyboard = NULL; + + check_for_consoles (state, state->default_tty, false); - if (state->kernel_console_tty != NULL) - redirect_standard_io_to_device (state->kernel_console_tty); - else - redirect_standard_io_to_device (state->default_tty); + redirect_standard_io_to_dev_null (); ply_trace ("Making sure " PLYMOUTH_RUNTIME_DIR " exists"); if (!ply_create_directory (PLYMOUTH_RUNTIME_DIR)) -- 1.8.1.4 ++++++ plymouth-terminal-session-close.patch ++++++ >From 5ed074df62fe13acd491079c2156907ba9e5b3be Mon Sep 17 00:00:00 2001 From: Frederic Crozat <[email protected]> Date: Mon, 10 Jun 2013 18:29:57 +0200 Subject: [PATCH] terminal-session: don't close session fd if already closed Prevents close(-1) from showing up in strace --- src/libply/ply-terminal-session.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libply/ply-terminal-session.c b/src/libply/ply-terminal-session.c index e7377e9..0bdb985 100644 --- a/src/libply/ply-terminal-session.c +++ b/src/libply/ply-terminal-session.c @@ -148,7 +148,8 @@ ply_terminal_session_free (ply_terminal_session_t *session) ply_free_string_array (session->argv); - close (session->pseudoterminal_master_fd); + if (session->pseudoterminal_master_fd >= 0) + close (session->pseudoterminal_master_fd); free (session); } -- 1.8.1.4 -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
