[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20111202.134040.638198723589712419.davem@davemloft.net>
Date: Fri, 02 Dec 2011 13:40:40 -0500 (EST)
From: David Miller <davem@...emloft.net>
To: eric.dumazet@...il.com
Cc: subramanian.vijay@...il.com, therbert@...gle.com,
netdev@...r.kernel.org
Subject: Re: Bug in computing data_len in tcp_sendmsg?
From: Eric Dumazet <eric.dumazet@...il.com>
Date: Fri, 02 Dec 2011 19:36:29 +0100
> What I ask now is following problem (even prior to my frag allocation
> patch) :
>
> 1) We allocate a linear skb (SG being off) to cook a tcp frame of length
> XXX bytes.
>
> 2) We send it.
>
> 3) We receive an ACK for first 31 bytes.
>
> 4) We trim 31 bytes from the head of skb. (skb_pull(skb, 31))
> skb->data is now not anymore aligned to a 4 bytes boundary.
>
> 5) Later, we need to retransmit skb (XXX minus 31 bytes already ACKed)
> We push TCP header, and skb->data is not aligned.
> TCP header is not aligned anymore. x86 doesnt care, but what about
> other arches with misalign traps ?
Yes, for non-SG this always was technically possible.
But now you've made it possible for SG too.
Frankly, I think we should:
1) Revert your patch, so it's not possible for SG once more.
2) Add code to reallocate the SKB linear data when this happens in
the non-SG case.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists