Hello community,

here is the log from the commit of package util-linux for openSUSE:Factory 
checked in at 2014-01-13 16:53:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/util-linux (Old)
 and      /work/SRC/openSUSE:Factory/.util-linux.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "util-linux"

Changes:
--------
--- /work/SRC/openSUSE:Factory/util-linux/util-linux.changes    2013-12-16 
07:15:13.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.util-linux.new/util-linux.changes       
2014-01-13 16:53:17.000000000 +0100
@@ -1,0 +2,9 @@
+Fri Jan 10 13:08:45 UTC 2014 - [email protected]
+
+- Add patch
+  agetty-fooled-on-serial-line-due-plymouth.patch
+  even with TTYReset=no it seems with systemd or plymouth the termios
+  flags become changed from under the first agetty on a serial system
+  console as the flags are locked (bnc#774126).
+
+-------------------------------------------------------------------

New:
----
  agetty-fooled-on-serial-line-due-plymouth.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ util-linux.spec ++++++
--- /var/tmp/diff_new_pack.oTgaMJ/_old  2014-01-13 16:53:18.000000000 +0100
+++ /var/tmp/diff_new_pack.oTgaMJ/_new  2014-01-13 16:53:18.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package util-linux
 #
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -108,6 +108,8 @@
 Patch13:        blkdiscard-BLKSSZGET-fills-in-an-int.patch
 # PATCH-FIX-SUSE -- better support of S390 in agetty
 Patch14:        tty3270-on-serial-line-of-s390.patch
+# PATCH-FIX-SUSE -- Let agetty not be fooled by locked termios srtucture
+Patch15:        agetty-fooled-on-serial-line-due-plymouth.patch
 
 # hack for boot.localfs
 Patch20:        util-linux-HACK-boot.localfs.diff
@@ -226,6 +228,7 @@
 %patch12 -p1
 %patch13 -p1
 %patch14 -p0
+%patch15 -p0
 #
 %patch20 -p1
 #

++++++ agetty-fooled-on-serial-line-due-plymouth.patch ++++++
Even with TTYReset=no it seems with systemd or plymouth the termios
flags become changed from under the first agetty on a serial system
console as the flags are locked.

---
 agetty.c |   39 ++++++++++++++++++++++++++++++++-------
 1 file changed, 32 insertions(+), 7 deletions(-)

--- term-utils/agetty.c
+++ term-utils/agetty.c 2014-01-10 13:05:50.411075349 +0000
@@ -281,8 +281,9 @@ static void login_options_to_argv(char *
 static char *fakehost;
 
 #ifdef DEBUGGING
+# include "closestream.h"
 # ifndef DEBUG_OUTPUT
-#  define DEBUG_OUTPUT "/dev/ttyp0"
+#  define DEBUG_OUTPUT "/dev/tty10"
 # endif
 # define debug(s) do { fprintf(dbf,s); fflush(dbf); } while (0)
 FILE *dbf;
@@ -320,8 +321,12 @@ int main(int argc, char **argv)
 
 #ifdef DEBUGGING
        dbf = fopen(DEBUG_OUTPUT, "w");
-       for (int i = 1; i < argc; i++)
+       for (int i = 1; i < argc; i++) {
+               if (i > 1)
+                       debug(" ");
                debug(argv[i]);
+       }
+       debug("\n");
 #endif                         /* DEBUGGING */
 
        /* Parse command-line arguments. */
@@ -473,7 +478,6 @@ int main(int argc, char **argv)
        if (options.osrelease)
                free(options.osrelease);
 #ifdef DEBUGGING
-       fprintf(dbf, "read %c\n", ch);
        if (close_stream(dbf) != 0)
                log_err("write failed: %s", DEBUG_OUTPUT);
 #endif
@@ -1090,6 +1094,23 @@ static void termio_init(struct options *
 {
        speed_t ispeed, ospeed;
        struct winsize ws;
+       int i;
+
+       for (i = 0; i < 20; i++) {
+               /*
+                * Even with TTYReset=no it seems with systemd or plymouth
+                * the termios flags become changed from under the first
+                * agetty on a serial system console as the flags are locked.
+                */
+               struct termios lock;
+               memset(&lock, 0, sizeof(struct termios));
+               if (ioctl(STDIN_FILENO, TIOCGLCKTRMIOS, &lock) < 0)
+                       break;
+               if (!lock.c_iflag && !lock.c_oflag && !lock.c_cflag && 
!lock.c_lflag)
+                       break;
+               debug("termios locked\n");
+               tcsendbreak(STDIN_FILENO, 0);           /* 0.25 upto 0.5 
seconds */
+       }
 
        if (op->flags & F_VCONSOLE) {
 #if defined(IUTF8) && defined(KDGKBMODE)
@@ -1154,9 +1175,6 @@ static void termio_init(struct options *
         * later on.
         */
 
-        /* Flush input and output queues, important for modems! */
-       tcflush(STDIN_FILENO, TCIOFLUSH);
-
 #ifdef IUTF8
        tp->c_iflag = tp->c_iflag & IUTF8;
        if (tp->c_iflag & IUTF8)
@@ -1216,8 +1234,11 @@ static void termio_init(struct options *
        if (op->flags & F_RTSCTS)
                tp->c_cflag |= CRTSCTS;
 #endif
+        /* Flush input and output queues, important for modems! */
+       tcflush(STDIN_FILENO, TCIOFLUSH);
 
-       tcsetattr(STDIN_FILENO, TCSANOW, tp);
+       if (tcsetattr(STDIN_FILENO, TCSANOW, tp))
+               log_warn(_("setting terminal attributes failed: %m"));
 
        /* Go to blocking input even in local mode. */
        fcntl(STDIN_FILENO, F_SETFL,
@@ -1238,6 +1259,10 @@ static void reset_vc(const struct option
 
        if (tcsetattr(STDIN_FILENO, TCSADRAIN, tp))
                log_warn(_("setting terminal attributes failed: %m"));
+
+       /* Go to blocking input even in local mode. */
+       fcntl(STDIN_FILENO, F_SETFL,
+             fcntl(STDIN_FILENO, F_GETFL, 0) & ~O_NONBLOCK);
 }
 
 /* Extract baud rate from modem status message. */

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to