* [PATCH] tcp: fix setting csum_start in tcp_gso_segment
@ 2014-06-25 4:03 Tom Herbert
2014-06-25 4:17 ` Linus Torvalds
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Tom Herbert @ 2014-06-25 4:03 UTC (permalink / raw)
To: davem; +Cc: torvalds, davej, akpm, netdev, linux-kernel
Dave Jones reported that a crash is occuring 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.
Reported-by: Dave Jones <davej@redhat.com>
Signed-off-by: Tom Herbert <therbert@google.com>
---
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 9cd5344..c1a3303 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;
}
--
2.0.0.526.g5318336
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] tcp: fix setting csum_start in tcp_gso_segment
2014-06-25 4:03 [PATCH] tcp: fix setting csum_start in tcp_gso_segment Tom Herbert
@ 2014-06-25 4:17 ` Linus Torvalds
2014-06-25 14:10 ` Dave Jones
2014-06-25 7:19 ` Eric Dumazet
2014-06-25 19:51 ` [PATCH] net: fix setting csum_start in skb_segment() Eric Dumazet
2 siblings, 1 reply; 8+ messages in thread
From: Linus Torvalds @ 2014-06-25 4:17 UTC (permalink / raw)
To: Tom Herbert
Cc: David Miller, Dave Jones, Andrew Morton, Network Development,
Linux Kernel Mailing List
On Tue, Jun 24, 2014 at 9:03 PM, Tom Herbert <therbert@google.com> wrote:
>
> 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.
>
> Reported-by: Dave Jones <davej@redhat.com>
DaveJ, I think you triggered this in five minutes on your box, and I
don't recall seeing anybody else reporting the oops (and google
doesn't find anything in the last month). So it's presumably somewhat
hw-specific. Does this fix the problem?
Linus
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] tcp: fix setting csum_start in tcp_gso_segment
2014-06-25 4:03 [PATCH] tcp: fix setting csum_start in tcp_gso_segment Tom Herbert
2014-06-25 4:17 ` Linus Torvalds
@ 2014-06-25 7:19 ` Eric Dumazet
2014-06-25 19:51 ` [PATCH] net: fix setting csum_start in skb_segment() Eric Dumazet
2 siblings, 0 replies; 8+ messages in thread
From: Eric Dumazet @ 2014-06-25 7:19 UTC (permalink / raw)
To: Tom Herbert; +Cc: davem, torvalds, davej, akpm, netdev, linux-kernel
On Tue, 2014-06-24 at 21:03 -0700, Tom Herbert wrote:
>
> 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.
>
> Reported-by: Dave Jones <davej@redhat.com>
> Signed-off-by: Tom Herbert <therbert@google.com>
> ---
> 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 9cd5344..c1a3303 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;
> }
>
Yes, seems an obvious typo, but please change patch title.
This is not "tcp: fix setting csum_start in tcp_gso_segment"
Maybe "net: fix setting csum_start in skb_segment()"
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] tcp: fix setting csum_start in tcp_gso_segment
2014-06-25 4:17 ` Linus Torvalds
@ 2014-06-25 14:10 ` Dave Jones
2014-06-25 18:52 ` David Miller
0 siblings, 1 reply; 8+ messages in thread
From: Dave Jones @ 2014-06-25 14:10 UTC (permalink / raw)
To: Linus Torvalds
Cc: Tom Herbert, David Miller, Andrew Morton, Network Development,
Linux Kernel Mailing List
On Tue, Jun 24, 2014 at 09:17:25PM -0700, Linus Torvalds wrote:
> On Tue, Jun 24, 2014 at 9:03 PM, Tom Herbert <therbert@google.com> wrote:
> >
> > 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.
> >
> > Reported-by: Dave Jones <davej@redhat.com>
>
> DaveJ, I think you triggered this in five minutes on your box, and I
> don't recall seeing anybody else reporting the oops (and google
> doesn't find anything in the last month). So it's presumably somewhat
> hw-specific. Does this fix the problem?
It's survived routing ~1GB of packets overnight, so I'd call this good.
thanks Tom.
Dave
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] tcp: fix setting csum_start in tcp_gso_segment
2014-06-25 14:10 ` Dave Jones
@ 2014-06-25 18:52 ` David Miller
0 siblings, 0 replies; 8+ messages in thread
From: David Miller @ 2014-06-25 18:52 UTC (permalink / raw)
To: davej; +Cc: torvalds, therbert, akpm, netdev, linux-kernel
From: Dave Jones <davej@redhat.com>
Date: Wed, 25 Jun 2014 10:10:52 -0400
> On Tue, Jun 24, 2014 at 09:17:25PM -0700, Linus Torvalds wrote:
> > On Tue, Jun 24, 2014 at 9:03 PM, Tom Herbert <therbert@google.com> wrote:
> > >
> > > 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.
> > >
> > > Reported-by: Dave Jones <davej@redhat.com>
> >
> > DaveJ, I think you triggered this in five minutes on your box, and I
> > don't recall seeing anybody else reporting the oops (and google
> > doesn't find anything in the last month). So it's presumably somewhat
> > hw-specific. Does this fix the problem?
>
> It's survived routing ~1GB of packets overnight, so I'd call this good.
Tom, please adjust the Subject line as suggested by Eric Dumazet and add
a Tested-by: for Dave.
Thanks!
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] net: fix setting csum_start in skb_segment()
2014-06-25 4:03 [PATCH] tcp: fix setting csum_start in tcp_gso_segment Tom Herbert
2014-06-25 4:17 ` Linus Torvalds
2014-06-25 7:19 ` Eric Dumazet
@ 2014-06-25 19:51 ` Eric Dumazet
2014-06-26 2:15 ` Tom Herbert
2014-06-26 3:46 ` David Miller
2 siblings, 2 replies; 8+ messages in thread
From: Eric Dumazet @ 2014-06-25 19:51 UTC (permalink / raw)
To: Tom Herbert; +Cc: davem, torvalds, davej, akpm, netdev, linux-kernel
From: Tom Herbert <therbert@google.com>
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.
Reported-by: Dave Jones <davej@redhat.com>
Tested-by: Dave Jones <davej@redhat.com>
Signed-off-by: Tom Herbert <therbert@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
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;
}
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] net: fix setting csum_start in skb_segment()
2014-06-25 19:51 ` [PATCH] net: fix setting csum_start in skb_segment() Eric Dumazet
@ 2014-06-26 2:15 ` Tom Herbert
2014-06-26 3:46 ` David Miller
1 sibling, 0 replies; 8+ messages in thread
From: Tom Herbert @ 2014-06-26 2:15 UTC (permalink / raw)
To: Eric Dumazet
Cc: David Miller, Linus Torvalds, davej, Andrew Morton,
Linux Netdev List, LKML
On Wed, Jun 25, 2014 at 12:51 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> From: Tom Herbert <therbert@google.com>
>
> 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 <therbert@google.com>
> Reported-by: Dave Jones <davej@redhat.com>
> Tested-by: Dave Jones <davej@redhat.com>
> Signed-off-by: Tom Herbert <therbert@google.com>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> 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;
> }
>
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] net: fix setting csum_start in skb_segment()
2014-06-25 19:51 ` [PATCH] net: fix setting csum_start in skb_segment() Eric Dumazet
2014-06-26 2:15 ` Tom Herbert
@ 2014-06-26 3:46 ` David Miller
1 sibling, 0 replies; 8+ messages in thread
From: David Miller @ 2014-06-26 3:46 UTC (permalink / raw)
To: eric.dumazet; +Cc: therbert, torvalds, davej, akpm, netdev, linux-kernel
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Wed, 25 Jun 2014 12:51:01 -0700
> From: Tom Herbert <therbert@google.com>
>
> Dave Jones reported that a crash is occurring in
...
> 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.
>
> Reported-by: Dave Jones <davej@redhat.com>
> Tested-by: Dave Jones <davej@redhat.com>
> Signed-off-by: Tom Herbert <therbert@google.com>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Fixes: 7e2b10c1e52ca ("net: Support for multiple checksums with gso")
Applied, thanks everyone.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-06-26 3:46 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-25 4:03 [PATCH] tcp: fix setting csum_start in tcp_gso_segment Tom Herbert
2014-06-25 4:17 ` Linus Torvalds
2014-06-25 14:10 ` Dave Jones
2014-06-25 18:52 ` David Miller
2014-06-25 7:19 ` Eric Dumazet
2014-06-25 19:51 ` [PATCH] net: fix setting csum_start in skb_segment() Eric Dumazet
2014-06-26 2:15 ` Tom Herbert
2014-06-26 3:46 ` David Miller
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.