From: Owen W. Taylor Date: Tue, 18 Aug 2015 18:41:24 +0000 (-0400) Subject: logind: use open_terminal() instead of open() X-Git-Tag: v226.4~1^2~127 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=21fa96e9227e2438f44de929ee6787ad32360c16;p=elogind.git logind: use open_terminal() instead of open() The open_terminal() function adds retries in case a terminal is in the process of being closed when we open it, and should generally be used to open a terminal. We especially need it for code that a subsequent commit adds that reopens the terminal at session shut-down time; such races would be more likely in that case. Found by Ray Strode. --- diff --git a/src/login/logind-session.c b/src/login/logind-session.c index 39eab7183..70a93c689 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -981,7 +981,7 @@ static int session_open_vt(Session *s) { return s->vtfd; sprintf(path, "/dev/tty%u", s->vtnr); - s->vtfd = open(path, O_RDWR | O_CLOEXEC | O_NONBLOCK | O_NOCTTY); + s->vtfd = open_terminal(path, O_RDWR | O_CLOEXEC | O_NONBLOCK | O_NOCTTY); if (s->vtfd < 0) return log_error_errno(errno, "cannot open VT %s of session %s: %m", path, s->id);