From 6405045a687f63099ebf6422696d38e3c57f8799 Mon Sep 17 00:00:00 2001 From: Jeff Dike Date: Sat, 1 Dec 2007 12:16:30 -0800 Subject: [PATCH] --- yaml --- r: 74431 b: refs/heads/master c: ce3b642d42f36406112ab474c03d81c5941d9398 h: refs/heads/master i: 74429: 6e0863d2f2f253f079f78b2b25ddcc1f9341c3ef 74427: 86581dc96246558d8057dacd1a0e0648ef1825a6 74423: 816cf47e1cd0b407b4551ceaaad5669bbe045803 74415: 55499b87e0e0df2d12eaeb9631b56594cd217008 74399: efdc25ef9bd6863c9ce837a256a97046f75ee30e 74367: d85c5fd8c5fde44f7a6e7bb5330f8d23fc4e3127 v: v3 --- [refs] | 2 +- trunk/arch/um/drivers/chan_user.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 54a8ef92dbd7..ab697fabd2f1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0a765329ed656ef08915c8be4aba9031ba467ee4 +refs/heads/master: ce3b642d42f36406112ab474c03d81c5941d9398 diff --git a/trunk/arch/um/drivers/chan_user.c b/trunk/arch/um/drivers/chan_user.c index b88e93b3a39f..025764089ac8 100644 --- a/trunk/arch/um/drivers/chan_user.c +++ b/trunk/arch/um/drivers/chan_user.c @@ -74,10 +74,16 @@ void generic_free(void *data) int generic_console_write(int fd, const char *buf, int n) { + sigset_t old, no_sigio; struct termios save, new; int err; if (isatty(fd)) { + sigemptyset(&no_sigio); + sigaddset(&no_sigio, SIGIO); + if (sigprocmask(SIG_BLOCK, &no_sigio, &old)) + goto error; + CATCH_EINTR(err = tcgetattr(fd, &save)); if (err) goto error; @@ -97,8 +103,11 @@ int generic_console_write(int fd, const char *buf, int n) * Restore raw mode, in any case; we *must* ignore any error apart * EINTR, except for debug. */ - if (isatty(fd)) + if (isatty(fd)) { CATCH_EINTR(tcsetattr(fd, TCSAFLUSH, &save)); + sigprocmask(SIG_SETMASK, &old, NULL); + } + return err; error: return -errno;