Fix EOFs when reading from empty canon->noncanon PTY

when switching from canonical to non-canonical mode, only mark inQueue as readable if there is input to be read
This commit is contained in:
Nathan Wang
2024-02-02 23:50:03 +00:00
parent f4795a1c8f
commit ff34288f92
2 changed files with 18 additions and 1 deletions
+1 -1
View File
@@ -154,7 +154,7 @@ func (l *lineDiscipline) setTermios(task *kernel.Task, args arch.SyscallArgument
if oldCanonEnabled && !l.termios.LEnabled(linux.ICANON) {
l.inQueue.mu.Lock()
l.inQueue.pushWaitBufLocked(l)
l.inQueue.readable = true
l.inQueue.readable = len(l.inQueue.readBuf) > 0
l.inQueue.mu.Unlock()
l.termiosMu.Unlock()
l.replicaWaiter.Notify(waiter.ReadableEvents)