Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757694AbaFZCPz (ORCPT ); Wed, 25 Jun 2014 22:15:55 -0400 Received: from mail-ie0-f174.google.com ([209.85.223.174]:56014 "EHLO mail-ie0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755519AbaFZCPx (ORCPT ); Wed, 25 Jun 2014 22:15:53 -0400 MIME-Version: 1.0 In-Reply-To: <1403725861.3796.47.camel@edumazet-glaptop2.roam.corp.google.com> References: <1403725861.3796.47.camel@edumazet-glaptop2.roam.corp.google.com> Date: Wed, 25 Jun 2014 19:15:52 -0700 Message-ID: Subject: Re: [PATCH] net: fix setting csum_start in skb_segment() From: Tom Herbert To: Eric Dumazet Cc: David Miller , Linus Torvalds , davej@redhat.com, Andrew Morton , Linux Netdev List , LKML Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jun 25, 2014 at 12:51 PM, Eric Dumazet wrote: > From: Tom Herbert > > Dave Jones reported that a crash is occurring in > > csum_partial > tcp_gso_segment > inet_gso_segment > ? update_dl_migration > skb_mac_gso_segment > __skb_gso_segment > dev_hard_start_xmit > sch_direct_xmit > __dev_queue_xmit > ? dev_hard_start_xmit > dev_queue_xmit > ip_finish_output > ? ip_output > ip_output > ip_forward_finish > ip_forward > ip_rcv_finish > ip_rcv > __netif_receive_skb_core > ? __netif_receive_skb_core > ? trace_hardirqs_on > __netif_receive_skb > netif_receive_skb_internal > napi_gro_complete > ? napi_gro_complete > dev_gro_receive > ? dev_gro_receive > napi_gro_receive > > It looks like a likely culprit is that SKB_GSO_CB()->csum_start is > not set correctly when doing non-scatter gather. We are using > offset as opposed to doffset. > Acked-by: Tom Herbert > Reported-by: Dave Jones > Tested-by: Dave Jones > Signed-off-by: Tom Herbert > Signed-off-by: Eric Dumazet > Fixes: 7e2b10c1e52ca ("net: Support for multiple checksums with gso") > --- > net/core/skbuff.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/core/skbuff.c b/net/core/skbuff.c > index 9cd5344fad73..c1a33033cbe2 100644 > --- a/net/core/skbuff.c > +++ b/net/core/skbuff.c > @@ -2993,7 +2993,7 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb, > skb_put(nskb, len), > len, 0); > SKB_GSO_CB(nskb)->csum_start = > - skb_headroom(nskb) + offset; > + skb_headroom(nskb) + doffset; > continue; > } > > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/