netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Question about skb_segment()
@ 2014-01-29  8:12 Arnaud Ebalard
  2014-02-09  2:42 ` Herbert Xu
  0 siblings, 1 reply; 2+ messages in thread
From: Arnaud Ebalard @ 2014-01-29  8:12 UTC (permalink / raw)
  To: Herbert Xu; +Cc: David Miller, Eric Dumazet, Willy Tarreau, netdev

Hi Herbert,

I wonder if you could share some knowledge on the behaviour of
skb_segment() as it is implemented in 3.13.0: when passed a GSO
packet to be segmented, can the skb result have skb->next == NULL?

One would expect the number of segments of the result to usually match
tcp_skb_pcount() of passed packet and hence having skb->next != NULL: 
AFAICT, this what usually happens when skb_segment() is called in
tcp_gso_segment() but I noticed some cases where the number of segments
(length of chained sk_buff) is lower than the expected value and also
have two backtraces resulting from a skb delivered with a NULL skb->next. 

The whole thread leading to my question is here, in case you want to
take a look:

 http://thread.gmane.org/gmane.linux.network/301587

Thanks in advance,

a+

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Question about skb_segment()
  2014-01-29  8:12 Question about skb_segment() Arnaud Ebalard
@ 2014-02-09  2:42 ` Herbert Xu
  0 siblings, 0 replies; 2+ messages in thread
From: Herbert Xu @ 2014-02-09  2:42 UTC (permalink / raw)
  To: Arnaud Ebalard; +Cc: David Miller, Eric Dumazet, Willy Tarreau, netdev

On Wed, Jan 29, 2014 at 09:12:57AM +0100, Arnaud Ebalard wrote:
> Hi Herbert,
> 
> I wonder if you could share some knowledge on the behaviour of
> skb_segment() as it is implemented in 3.13.0: when passed a GSO
> packet to be segmented, can the skb result have skb->next == NULL?
> 
> One would expect the number of segments of the result to usually match
> tcp_skb_pcount() of passed packet and hence having skb->next != NULL: 
> AFAICT, this what usually happens when skb_segment() is called in
> tcp_gso_segment() but I noticed some cases where the number of segments
> (length of chained sk_buff) is lower than the expected value and also
> have two backtraces resulting from a skb delivered with a NULL skb->next. 

Hi Arnaud:

This is definitely not expected.  You said that the crash is not
easily reproducible.  Are you able to easily reproduce the problem
where the number of segments produced is less than what is expected?

Can you print out the size of the segments produced in that case?

Thanks!
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-02-09  2:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-29  8:12 Question about skb_segment() Arnaud Ebalard
2014-02-09  2:42 ` Herbert Xu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).