fb7efbf
From 612d18e4b329cb362d494ddf28553ae82406f01d Mon Sep 17 00:00:00 2001
fb7efbf
From: "Owen W. Taylor" <otaylor@fishsoup.net>
fb7efbf
Date: Tue, 18 Aug 2015 14:41:24 -0400
fb7efbf
Subject: [PATCH 31/47] logind: use open_terminal() instead of open()
fb7efbf
fb7efbf
The open_terminal() function adds retries in case a terminal
fb7efbf
is in the process of being closed when we open it, and should
fb7efbf
generally be used to open a terminal. We especially need it
fb7efbf
for code that a subsequent commit adds that reopens the terminal
fb7efbf
at session shut-down time; such races would be more likely in
fb7efbf
that case.
fb7efbf
fb7efbf
Found by Ray Strode.
fb7efbf
---
fb7efbf
 src/login/logind-session.c | 2 +-
fb7efbf
 1 file changed, 1 insertion(+), 1 deletion(-)
fb7efbf
fb7efbf
diff --git a/src/login/logind-session.c b/src/login/logind-session.c
fb7efbf
index 6a450b0..a8e667b 100644
fb7efbf
--- a/src/login/logind-session.c
fb7efbf
+++ b/src/login/logind-session.c
fb7efbf
@@ -975,7 +975,7 @@ static int session_open_vt(Session *s) {
fb7efbf
                 return s->vtfd;
fb7efbf
 
fb7efbf
         sprintf(path, "/dev/tty%u", s->vtnr);
fb7efbf
-        s->vtfd = open(path, O_RDWR | O_CLOEXEC | O_NONBLOCK | O_NOCTTY);
fb7efbf
+        s->vtfd = open_terminal(path, O_RDWR | O_CLOEXEC | O_NONBLOCK | O_NOCTTY);
fb7efbf
         if (s->vtfd < 0)
fb7efbf
                 return log_error_errno(errno, "cannot open VT %s of session %s: %m", path, s->id);
fb7efbf
 
fb7efbf
-- 
fb7efbf
2.5.0
fb7efbf