forked from pool/util-linux
Accepting request 213474 from Base:System
- 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). OBS-URL: https://build.opensuse.org/request/show/213474 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/util-linux?expand=0&rev=174
This commit is contained in:
parent
4efd0700ac
commit
5b6c15d996
101
agetty-fooled-on-serial-line-due-plymouth.patch
Normal file
101
agetty-fooled-on-serial-line-due-plymouth.patch
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
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. */
|
@ -1,3 +1,12 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jan 10 13:08:45 UTC 2014 - werner@suse.de
|
||||||
|
|
||||||
|
- 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).
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Dec 10 16:10:27 UTC 2013 - sweet_f_a@gmx.de
|
Tue Dec 10 16:10:27 UTC 2013 - sweet_f_a@gmx.de
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package util-linux
|
# 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
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -108,6 +108,8 @@ Patch12: util-linux-2.23.1-noenc-suse.diff
|
|||||||
Patch13: blkdiscard-BLKSSZGET-fills-in-an-int.patch
|
Patch13: blkdiscard-BLKSSZGET-fills-in-an-int.patch
|
||||||
# PATCH-FIX-SUSE -- better support of S390 in agetty
|
# PATCH-FIX-SUSE -- better support of S390 in agetty
|
||||||
Patch14: tty3270-on-serial-line-of-s390.patch
|
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
|
# hack for boot.localfs
|
||||||
Patch20: util-linux-HACK-boot.localfs.diff
|
Patch20: util-linux-HACK-boot.localfs.diff
|
||||||
@ -226,6 +228,7 @@ xzcat %{S:0} | %gpg_verify %{S:12} -
|
|||||||
%patch12 -p1
|
%patch12 -p1
|
||||||
%patch13 -p1
|
%patch13 -p1
|
||||||
%patch14 -p0
|
%patch14 -p0
|
||||||
|
%patch15 -p0
|
||||||
#
|
#
|
||||||
%patch20 -p1
|
%patch20 -p1
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user