Messages in this thread | | | Date | Sun, 26 Oct 2003 16:28:11 -0800 (PST) | From | Linus Torvalds <> | Subject | Re: Linux 2.6.0-test9 |
| |
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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |