On 2018/8/16 15:44, Michal Kubecek wrote:
On Thu, Aug 16, 2018 at 03:39:14PM +0800, maowenan wrote:
On 2018/8/16 15:23, Michal Kubecek wrote:
On Thu, Aug 16, 2018 at 03:19:12PM +0800, maowenan wrote:
On 2018/8/16 14:52, Michal Kubecek wrote:
My point is that backporting all this into stable 4.4 is quite intrusive so that if we can achieve similar results with a simple fix of an obvious omission, it would be preferrable.
There are five patches in mainline to fix this CVE, only two patches have no effect on stable 4.4, the important reason is 4.4 use simple queue but mainline use RB tree.
I have tried my best to use easy way to fix this with dropping packets 12.5%(or other value) based on simple queue, but the result is not very well, so the RB tree is needed and tested result is my desire.
If we only back port two patches but they don't fix the issue, I think they don't make any sense.
There is an obvious omission in one of the two patches and Takashi's patch fixes it. If his follow-up fix (applied on top of what is in stable 4.4 now) addresses the problem, I would certainly prefer using it over backporting the whole series.
Do you mean below codes from Takashi can fix this CVE? But I have already tested like this two days ago, it is not good effect.
IIRC what you proposed was different, you proposed to replace the "=" in the other branch by "+=".
No, I think you don't get what I mean, I have already tested stable 4.4, based on commit dc6ae4d, and change the codes like Takashi, which didn't contain any codes I have sent in this patch series.
I suggest someone to test again based on Takashi.
dc6ae4d tcp: detect malicious patterns in tcp_collapse_ofo_queue() 5fbec48 tcp: avoid collapses in tcp_prune_queue() if possible 255924e tcp: do not delay ACK in DCTCP upon CE status change 0b1d40e tcp: do not cancel delay-AcK on DCTCP special ACK 17fea38e7 tcp: helpers to send special DCTCP ack 500e03f tcp: fix dctcp delayed ACK schedule b04c9a0 rtnetlink: add rtnl_link_state check in rtnl_configure_link 73dad08 net/mlx4_core: Save the qpn from the input modifier in RST2INIT wrapper 48f41c0 ip: hash fragments consistently 54a634c MIPS: ath79: fix register address in ath79_ddr_wb_flush() 762b585 Linux 4.4.144
Michal Kubecek
Could you try to test with POC programme mentioned previous mail in case I made mistake?
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 4a261e078082..9c4c6cd0316e 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -4835,6 +4835,7 @@ static void tcp_collapse_ofo_queue(struct sock *sk) end = TCP_SKB_CB(skb)->end_seq; range_truesize = skb->truesize; } else {
range_truesize += skb->truesize; if (before(TCP_SKB_CB(skb)->seq, start)) start = TCP_SKB_CB(skb)->seq; if (after(TCP_SKB_CB(skb)->end_seq, end))
--
Michal Kubecek
.
.