Re: [PANIC] lro + iscsi or lro + skb text search causes panic
From: David Miller <davem@davemloft.net>
Date: 2009-01-27 05:52:09
From: Herbert Xu <herbert@gondor.apana.org.au> Date: Tue, 27 Jan 2009 09:30:22 +1100
net: Fix frag_list handling in skb_seq_read The frag_list handling was broken in skb_seq_read: 1) We didn't add the stepped offset when looking at the head are of fragments other than the first. 2) We didn't take the stepped offset away when setting the data pointer in the head area. 3) The frag index wasn't reset. This patch fixes both issues. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
I see, the code is only clearing the fragment index when it's advancing from one SKB to the next while already in the middle of a ->frag_list, not when transitioning past the root skb in such a list. I bet some weird cases happen when "consumed" it's advanced by the caller the entire length of data returned by the previous skb_seq_read(). It all seems to be designed to work for that case, however. Anyways, Herbert's patch looks definitely correct but until we've gotten these crashes and hangs solved I don't want to apply it.