Re: Linux 2.6.0-test9

From: Linus Torvalds
Date: Sun Oct 26 2003 - 19:28:55 EST



On Sun, 26 Oct 2003, Linus Torvalds wrote:
>
> Andries, what was the situation that led to a TCP lockup? I don't see
> anything but URG being broken by that patch, so it would be good to verify
> that your breakage really was URG, to see that it's totally understood..

Btw, final comment: if it really is URG-only breakage, then instead of
reverting the patch (if it had some other reasons going for it), we could
change the URG test at the top of the loop from

if (copied && tp->urg_data && tp->urg_seq == *seq)
break

to

if (tp->urg_data && tp->urg_seq == *seq) {
if (copied)
break;
if (signal_pending(current)) {
copied = timeo ? sock_intr_errno(timeo) : -EAGAIN;
break;
}
}

which gives the right break semantics for URG data.

After that, the only other place where we should check for signal pending
is probably at the tcp_data_wait() call. All the other signal pending
checks seem bogus (ie right now a pending signal will mean that we avoid
doing even TCP-level cleanups, which looks just wrong).

But reverting the change is clearly the "safer" thing to do, I just worry
that Alexey might have had a real reason for tryign to avoid the EINTR in
the first place (for non-URG data).

Linus

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