Re: [PATCH 1/1] tty: set_termios/set_termiox should not return -EINTR

From: Jiri Slaby
Date: Tue Jan 29 2013 - 17:01:33 EST


On 01/29/2013 08:49 PM, Oleg Nesterov wrote:
> 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.

Yes, and more, it is against POSIX. I don't dispute the correctness of
the patch at all.

>> 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.

But I really want to hear more details here (the commit log deserves
that). E.g. why it started causing problems right now. The code is there
like forever.

--
js
suse labs
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/