>>> This implements subset of function for codes which was removed by the >>> commit >>> I mentioned below. >> >> No, as I explain above, it performs a different check. >> >>>>> > > [...]
Clearly I was wrong, sorry. Thanks for pointing out that commit and 576a30eb6453 ("[NET]: Added GSO header verification"). >>>>> For performance reason. I think we should delay the check or >>>>> segmentation >>>>> as >>>>> much as possible until it was really needed. >>>> >>>> Going through segmentation is probably as expensive as flow dissector, >>>> if not more so because of the indirect branches. >>> >>> I think we don't even need to care about this consider the evil packet >>> should be rare. >> >> How does frequency matter when a single packet can crash a host? > > > I mean consider we had fix the crash, we don't care how expensive do we spot > this. > >> >>> And what you propose here is just a very small subset of the >>> necessary checking, more comes at gso header checking. So even if we care >>> performance, it only help for some specific case. >> >> It also fixed the bug that Eric sent a separate patch for, as that did >> not dissect as a valid TCP packet, either. > > > I may miss something but how did this patch protects an evil thoff? Actually, it blocked that specific reproducer because the ip protocol did not match. I think that __skb_flow_dissect_tcp should return a boolean, causing dissection return FLOW_DISSECT_RET_OUT_BAD if the tcph is bad. That would be needed to really catch it with flow dissection at the source.