[ovs-dev] [PATCH] datapath: Move LRO check from transmit to receive.

Jesse Gross jesse at nicira.com
Tue Jan 22 01:16:04 UTC 2013


On Mon, Jan 21, 2013 at 5:11 PM, Ben Pfaff <blp at nicira.com> wrote:
> On Mon, Jan 21, 2013 at 05:21:19AM -0800, Jesse Gross wrote:
>> Commit 24b019f808211a95078efd916064af0975ca5733 (datapath: Disable
>> LRO from userspace instead of the kernel.) accidentally moved the
>> check for LRO packets from the receive path to transmit.  Since
>> this check is supposed to protect OVS (and other parts of the system)
>> from packets that it cannot handle it is obviously not useful on
>> egress.  Therefore, this commit moves it back to the receive side.
>>
>> The primary problem that this caused is upcalls to userspace tried
>> to segment the packet even though no segmentation information is
>> available.  This would later cause NULL pointer dereferences when
>> skb_gso_segment() did nothing.
>>
>> Bug #14772
>>
>> Signed-off-by: Jesse Gross <jesse at nicira.com>
>
> Before commit 24b019f80821, netdev_port_receive() called
> skb_warn_if_lro() but ignored its return value.  skb_warn_if_lro()
> doesn't appear to do anything to "neutralize" the skb.  Does this mean
> that these earlier versions also have a bug that should be fixed
> separately?

Yes, the earlier versions were also buggy.  However, the last version
to have that behavior was 1.2 so I don't think we need to worry about
it any more.

> Acked-by: Ben Pfaff <blp at nicira.com>

Thanks, I'll apply this and the revert to all the applicable branches.



More information about the dev mailing list