Thread (9 messages) 9 messages, 4 authors, 2015-09-22

Re: [PATCH net] net: Handle negative checksum offset in skb-checksum-help

flat view

From: Pravin Shelar <hidden>
Date: 2015-09-22 04:44:04

On Mon, Sep 21, 2015 at 8:21 PM, Eric Dumazet [off-list ref] wrote:
On Mon, 2015-09-21 at 19:49 -0700, Pravin Shelar wrote:
quoted
On Mon, Sep 21, 2015 at 7:14 PM, Eric Dumazet [off-list ref] wrote:
quoted
On Mon, 2015-09-21 at 18:04 -0700, Pravin Shelar wrote:
quoted
On Mon, Sep 21, 2015 at 5:14 PM, David Miller [off-list ref] wrote:
quoted
From: Pravin B Shelar <redacted>
Date: Sun, 20 Sep 2015 23:53:17 -0700
quoted
VXLAN device can receive skb with checksum partial. But the checksum
offset could be in outer header which is pulled on receive.
Such a scenerio is a bug.

Anything that pulls off a header should use a utility function such
as skb_pull_rcsum() or skb_postpull_rcsum() to make sure this gets
fixed up properly.
skb_postpull_rcsum() does not change checksum-offset. vxlan receive
already calls this function.
Then the bug is here.

Otherwise we might have to 'fix' other places.
I posted a patch to fix skb_postpull_rcsum() to handle this case. But
that was not accepted.
https://patchwork.ozlabs.org/patch/512625/

And specific solution for skb_checksum_help() was suggested.

http://marc.info/?l=linux-netdev&m=144108078931774&w=2
If we pull a header where the csum is, then for sure CHECKSUM_PARTIAL
becomes buggy and void.

Tom was not advocating doing an operation (skb_postpull_rcsum()) leaving
skb in a wrong state.

We should fix callers that are pulling header in such a way.
So same as first patch but set skb checksum flag to CHECKSUM_NONE?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help