Messages in this thread | | | Date | Tue, 29 Jan 2013 20:49:08 +0100 | From | Oleg Nesterov <> | Subject | Re: [PATCH 1/1] tty: set_termios/set_termiox should not return -EINTR |
| |
On 01/29, Jiri Slaby wrote: > > On 01/29/2013 08:07 PM, Oleg Nesterov wrote: > > > > Change set_termios/set_termiox to return -ERESTARTSYS to fix this > > particular problem. > > This looks reasonable. However given the link above says: > You are not authorized to access bug #904907. > the description above is poor. What problem exactly does this fix?
A syscall must never return EINTR unless it can not be restarted (or it should not be restarted by, say, historical reasons).
In this case ioctl(TCSETAW) returns -EINTR even if it is interrupted by the signal which has the SA_RESTART handler. This doesn't look right no matter what.
> Why this should go to stable at all?
OK, this is up to you.
But if this patch is correct, perhaps it should be backported. This -EINTR breaks /bin/bash which doesn't expect it, this leads to "*** glibc detected *** ./bash-4.1.2-14.el6/bin/bash: double free or corruption (out):"
Perhaps /bin/bash is buggy too, I do not know. Probably Roman and Lingzhu can tell more.
Oleg.
| |