All of lore.kernel.org
 help / color / mirror / Atom feed
* [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
@ 2010-10-11 15:20 Andrey Vagin
  2010-10-11 15:40 ` Michael Tokarev
  0 siblings, 1 reply; 13+ messages in thread
From: Andrey Vagin @ 2010-10-11 15:20 UTC (permalink / raw)
  To: stable; +Cc: netdev, Krishna Kumar, David S. Miller, Andrey Vagin

From: Krishna Kumar <krkumar2@in.ibm.com>

commit 068a2de57ddf4f472e32e7af868613c574ad1d88 upstream.

Non-GSO code drops dst entry for performance reasons, but
the same is missing for GSO code. Drop dst while cache-hot
for GSO case too.

Note: Without this patch the kernel may oops if used bridged veth
devices. A bridge set skb->dst = fake_dst_ops, veth transfers this skb
to netif_receive_skb...ip_rcv_finish and it calls dst_input(skb), but
fake_dst_ops->input = NULL -> Oops

Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Andrey Vagin <avagin@openvz.org>
---
 net/core/dev.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/net/core/dev.c b/net/core/dev.c
index 915d0ae..c325ab6 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1747,6 +1747,14 @@ gso:
 
 		skb->next = nskb->next;
 		nskb->next = NULL;
+
+		/*
+		 * If device doesnt need nskb->dst, release it right now while
+		 * its hot in this cpu cache
+		 */
+		if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
+			skb_dst_drop(nskb);
+
 		rc = ops->ndo_start_xmit(nskb, dev);
 		if (unlikely(rc != NETDEV_TX_OK)) {
 			nskb->next = skb->next;
-- 
1.7.2.1


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

* Re: [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
  2010-10-11 15:20 [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too Andrey Vagin
@ 2010-10-11 15:40 ` Michael Tokarev
  2010-10-11 15:46   ` Eric Dumazet
  0 siblings, 1 reply; 13+ messages in thread
From: Michael Tokarev @ 2010-10-11 15:40 UTC (permalink / raw)
  To: Andrey Vagin; +Cc: stable, netdev, Krishna Kumar, David S. Miller

Andrey Vagin wrote:
> From: Krishna Kumar <krkumar2@in.ibm.com>
> 
> commit 068a2de57ddf4f472e32e7af868613c574ad1d88 upstream.
> 
> Non-GSO code drops dst entry for performance reasons, but
> the same is missing for GSO code. Drop dst while cache-hot
> for GSO case too.
> 
> Note: Without this patch the kernel may oops if used bridged veth
> devices. A bridge set skb->dst = fake_dst_ops, veth transfers this skb
> to netif_receive_skb...ip_rcv_finish and it calls dst_input(skb), but
> fake_dst_ops->input = NULL -> Oops

Hmm.  Isn't this the reason for my mysterious OOPSes (jump to
NULL) which I concluded are due to stack overflow?  See f.e.
http://www.spinics.net/lists/netdev/msg142104.html

This started happening when I updated virtio drivers in a windows
virtual machne to the ones which supports GSO, and my config
involves bridging veth devices, and this is where the prob
actually occurs - when doing guest => virtio => tap => bridge => veth
route....

Thanks!

/mjt

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

* Re: [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
  2010-10-11 15:40 ` Michael Tokarev
@ 2010-10-11 15:46   ` Eric Dumazet
  2010-10-11 15:59     ` David Miller
  0 siblings, 1 reply; 13+ messages in thread
From: Eric Dumazet @ 2010-10-11 15:46 UTC (permalink / raw)
  To: Michael Tokarev
  Cc: Andrey Vagin, stable, netdev, Krishna Kumar, David S. Miller

Le lundi 11 octobre 2010 à 19:40 +0400, Michael Tokarev a écrit :
> Andrey Vagin wrote:
> > From: Krishna Kumar <krkumar2@in.ibm.com>
> > 
> > commit 068a2de57ddf4f472e32e7af868613c574ad1d88 upstream.
> > 
> > Non-GSO code drops dst entry for performance reasons, but
> > the same is missing for GSO code. Drop dst while cache-hot
> > for GSO case too.
> > 
> > Note: Without this patch the kernel may oops if used bridged veth
> > devices. A bridge set skb->dst = fake_dst_ops, veth transfers this skb
> > to netif_receive_skb...ip_rcv_finish and it calls dst_input(skb), but
> > fake_dst_ops->input = NULL -> Oops
> 
> Hmm.  Isn't this the reason for my mysterious OOPSes (jump to
> NULL) which I concluded are due to stack overflow?  See f.e.
> http://www.spinics.net/lists/netdev/msg142104.html
> 
> This started happening when I updated virtio drivers in a windows
> virtual machne to the ones which supports GSO, and my config
> involves bridging veth devices, and this is where the prob
> actually occurs - when doing guest => virtio => tap => bridge => veth
> route....
> 
> Thanks!

This patch was an optimization, not a bug fix.

If something gets better, then a bug is somewhere else ?




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

* Re: [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
  2010-10-11 15:46   ` Eric Dumazet
@ 2010-10-11 15:59     ` David Miller
  2010-10-11 16:19       ` Andrew Vagin
  0 siblings, 1 reply; 13+ messages in thread
From: David Miller @ 2010-10-11 15:59 UTC (permalink / raw)
  To: eric.dumazet; +Cc: mjt, avagin, stable, netdev, krkumar2

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Mon, 11 Oct 2010 17:46:49 +0200

> This patch was an optimization, not a bug fix.

Right, this has no business going into 2.6.32-stable at all.

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

* Re: [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
  2010-10-11 15:59     ` David Miller
@ 2010-10-11 16:19       ` Andrew Vagin
  2010-10-11 16:30         ` Eric Dumazet
  0 siblings, 1 reply; 13+ messages in thread
From: Andrew Vagin @ 2010-10-11 16:19 UTC (permalink / raw)
  To: David Miller; +Cc: eric.dumazet, mjt, avagin, stable, netdev, krkumar2

  On 10/11/2010 07:59 PM, David Miller wrote:
> From: Eric Dumazet<eric.dumazet@gmail.com>
> Date: Mon, 11 Oct 2010 17:46:49 +0200
>
>> This patch was an optimization, not a bug fix.
> Right, this has no business going into 2.6.32-stable at all.
This is bug fix. Now nobody drops dst in case gso and veth, because the 
commit 60df914e295a21a223e43a7ee01e0c73c64dd111 deletes skb_dst_drop 
from the veth.c. We should commit my patch or revert commit 60df914e.

We have two bug reports:

http://www.spinics.net/lists/netdev/msg142104.html

http://bugzilla.openvz.org/show_bug.cgi?id=1634

Taylan verified that the patch really fix his bug.

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

* Re: [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
  2010-10-11 16:19       ` Andrew Vagin
@ 2010-10-11 16:30         ` Eric Dumazet
  2010-10-11 16:55           ` Michael Tokarev
  2010-10-26 18:54           ` David Miller
  0 siblings, 2 replies; 13+ messages in thread
From: Eric Dumazet @ 2010-10-11 16:30 UTC (permalink / raw)
  To: avagin; +Cc: David Miller, mjt, avagin, stable, netdev, krkumar2

Le lundi 11 octobre 2010 à 20:19 +0400, Andrew Vagin a écrit :
> On 10/11/2010 07:59 PM, David Miller wrote:
> > From: Eric Dumazet<eric.dumazet@gmail.com>
> > Date: Mon, 11 Oct 2010 17:46:49 +0200
> >
> >> This patch was an optimization, not a bug fix.
> > Right, this has no business going into 2.6.32-stable at all.
> This is bug fix. Now nobody drops dst in case gso and veth, because the 
> commit 60df914e295a21a223e43a7ee01e0c73c64dd111 deletes skb_dst_drop 
> from the veth.c. We should commit my patch or revert commit 60df914e.
> 
> We have two bug reports:
> 
> http://www.spinics.net/lists/netdev/msg142104.html
> 
> http://bugzilla.openvz.org/show_bug.cgi?id=1634
> 
> Taylan verified that the patch really fix his bug.

Now that makes sense ;)

This is always good to mention commit id of a bug origin.

Because reading your patch (changelog and content), it was not obvious
it fixed a bug.

Thanks !



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

* Re: [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
  2010-10-11 16:30         ` Eric Dumazet
@ 2010-10-11 16:55           ` Michael Tokarev
  2010-10-26 18:54           ` David Miller
  1 sibling, 0 replies; 13+ messages in thread
From: Michael Tokarev @ 2010-10-11 16:55 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: avagin, David Miller, avagin, stable, netdev, krkumar2

11.10.2010 20:30, Eric Dumazet wrote:
> Le lundi 11 octobre 2010 à 20:19 +0400, Andrew Vagin a écrit :
>> On 10/11/2010 07:59 PM, David Miller wrote:
>>> From: Eric Dumazet<eric.dumazet@gmail.com>
>>> Date: Mon, 11 Oct 2010 17:46:49 +0200
>>>
>>>> This patch was an optimization, not a bug fix.
>>> Right, this has no business going into 2.6.32-stable at all.
>> This is bug fix. Now nobody drops dst in case gso and veth, because the 
>> commit 60df914e295a21a223e43a7ee01e0c73c64dd111 deletes skb_dst_drop 
>> from the veth.c. We should commit my patch or revert commit 60df914e.
>>
>> We have two bug reports:
>>
>> http://www.spinics.net/lists/netdev/msg142104.html

This is korg#17251: https://bugzilla.kernel.org/show_bug.cgi?id=17251 ,
from me.

But I really wonder how that thing does not happen anymore
when I disabled netfilter hooks...  I can't experiment till
weekend, but I'll try to get back to it and re-verify again,
with and without this fix, with and without netfilter hooks.

What I know for sure is 2 facts: I can't trigger the problem
now (with the hooks disabled), and I can't trigger it on a
subsequent kernel releases - e.g. 2.6.35 does not have the
issue, but 2.6.32 has.

>> http://bugzilla.openvz.org/show_bug.cgi?id=1634

Thanks!

/mjt

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

* Re: [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
  2010-10-11 16:30         ` Eric Dumazet
  2010-10-11 16:55           ` Michael Tokarev
@ 2010-10-26 18:54           ` David Miller
  2010-12-08 22:47             ` avagin
  1 sibling, 1 reply; 13+ messages in thread
From: David Miller @ 2010-10-26 18:54 UTC (permalink / raw)
  To: eric.dumazet; +Cc: avagin, mjt, avagin, stable, netdev, krkumar2

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Mon, 11 Oct 2010 18:30:52 +0200

> Le lundi 11 octobre 2010 à 20:19 +0400, Andrew Vagin a écrit :
>> On 10/11/2010 07:59 PM, David Miller wrote:
>> > From: Eric Dumazet<eric.dumazet@gmail.com>
>> > Date: Mon, 11 Oct 2010 17:46:49 +0200
>> >
>> >> This patch was an optimization, not a bug fix.
>> > Right, this has no business going into 2.6.32-stable at all.
>> This is bug fix. Now nobody drops dst in case gso and veth, because the 
>> commit 60df914e295a21a223e43a7ee01e0c73c64dd111 deletes skb_dst_drop 
>> from the veth.c. We should commit my patch or revert commit 60df914e.
>> 
>> We have two bug reports:
>> 
>> http://www.spinics.net/lists/netdev/msg142104.html
>> 
>> http://bugzilla.openvz.org/show_bug.cgi?id=1634
>> 
>> Taylan verified that the patch really fix his bug.
> 
> Now that makes sense ;)

In case there is any doubt about this -stable patch submission:

Acked-by: David S. Miller <davem@davemloft.net>

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

* Re: [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
  2010-10-26 18:54           ` David Miller
@ 2010-12-08 22:47             ` avagin
  2010-12-08 23:05               ` Greg KH
  0 siblings, 1 reply; 13+ messages in thread
From: avagin @ 2010-12-08 22:47 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: David Miller, eric.dumazet, mjt, avagin, stable, netdev, krkumar2

Hi Greg,

This patch is acked by David S. Miller. Greg, maybe you can commit it?

On 10/26/2010 10:54 PM, David Miller wrote:
> From: Eric Dumazet<eric.dumazet@gmail.com>
> Date: Mon, 11 Oct 2010 18:30:52 +0200
>
>> Le lundi 11 octobre 2010 à 20:19 +0400, Andrew Vagin a écrit :
>>> On 10/11/2010 07:59 PM, David Miller wrote:
>>>> From: Eric Dumazet<eric.dumazet@gmail.com>
>>>> Date: Mon, 11 Oct 2010 17:46:49 +0200
>>>>
>>>>> This patch was an optimization, not a bug fix.
>>>> Right, this has no business going into 2.6.32-stable at all.
>>> This is bug fix. Now nobody drops dst in case gso and veth, because the
>>> commit 60df914e295a21a223e43a7ee01e0c73c64dd111 deletes skb_dst_drop
>>> from the veth.c. We should commit my patch or revert commit 60df914e.
>>>
>>> We have two bug reports:
>>>
>>> http://www.spinics.net/lists/netdev/msg142104.html
>>>
>>> http://bugzilla.openvz.org/show_bug.cgi?id=1634
>>>
>>> Taylan verified that the patch really fix his bug.
>>
>> Now that makes sense ;)
>
> In case there is any doubt about this -stable patch submission:
>
> Acked-by: David S. Miller<davem@davemloft.net>


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

* Re: [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
  2010-12-08 22:47             ` avagin
@ 2010-12-08 23:05               ` Greg KH
  2010-12-09  6:43                 ` [stable] " avagin
  0 siblings, 1 reply; 13+ messages in thread
From: Greg KH @ 2010-12-08 23:05 UTC (permalink / raw)
  To: avagin
  Cc: krkumar2, avagin, eric.dumazet, netdev, Greg Kroah-Hartman, mjt,
	stable, David Miller

On Thu, Dec 09, 2010 at 01:47:41AM +0300, avagin@gmail.com wrote:
> Hi Greg,
> 
> This patch is acked by David S. Miller. Greg, maybe you can commit it?

What specific patch please?

confused,

greg k-h

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

* Re: [stable] [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
  2010-12-08 23:05               ` Greg KH
@ 2010-12-09  6:43                 ` avagin
  2010-12-09 18:19                   ` Greg KH
  0 siblings, 1 reply; 13+ messages in thread
From: avagin @ 2010-12-09  6:43 UTC (permalink / raw)
  To: Greg KH
  Cc: Greg Kroah-Hartman, krkumar2, avagin, eric.dumazet, netdev, mjt,
	David Miller, stable

[-- Attachment #1: Type: text/plain, Size: 288 bytes --]

I add the patch in attachments

On 12/09/2010 02:05 AM, Greg KH wrote:
> On Thu, Dec 09, 2010 at 01:47:41AM +0300, avagin@gmail.com wrote:
>> Hi Greg,
>>
>> This patch is acked by David S. Miller. Greg, maybe you can commit it?
>
> What specific patch please?
>
> confused,
>
> greg k-h


[-- Attachment #2: Attached Message --]
[-- Type: message/rfc822, Size: 3214 bytes --]

From: Andrey Vagin <avagin@openvz.org>
To: stable@kernel.org
Cc: netdev@vger.kernel.org, Krishna Kumar <krkumar2@in.ibm.com>, "David S. Miller" <davem@davemloft.net>, Andrey Vagin <avagin@openvz.org>
Subject: [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
Date: Mon, 11 Oct 2010 19:20:13 +0400
Message-ID: <1286810413-30238-1-git-send-email-avagin@openvz.org>

From: Krishna Kumar <krkumar2@in.ibm.com>

commit 068a2de57ddf4f472e32e7af868613c574ad1d88 upstream.

Non-GSO code drops dst entry for performance reasons, but
the same is missing for GSO code. Drop dst while cache-hot
for GSO case too.

Note: Without this patch the kernel may oops if used bridged veth
devices. A bridge set skb->dst = fake_dst_ops, veth transfers this skb
to netif_receive_skb...ip_rcv_finish and it calls dst_input(skb), but
fake_dst_ops->input = NULL -> Oops

Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Andrey Vagin <avagin@openvz.org>
---
 net/core/dev.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/net/core/dev.c b/net/core/dev.c
index 915d0ae..c325ab6 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1747,6 +1747,14 @@ gso:
 
 		skb->next = nskb->next;
 		nskb->next = NULL;
+
+		/*
+		 * If device doesnt need nskb->dst, release it right now while
+		 * its hot in this cpu cache
+		 */
+		if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
+			skb_dst_drop(nskb);
+
 		rc = ops->ndo_start_xmit(nskb, dev);
 		if (unlikely(rc != NETDEV_TX_OK)) {
 			nskb->next = skb->next;
-- 
1.7.2.1


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

* Re: [stable] [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
  2010-12-09  6:43                 ` [stable] " avagin
@ 2010-12-09 18:19                   ` Greg KH
  2010-12-21  0:07                     ` Greg KH
  0 siblings, 1 reply; 13+ messages in thread
From: Greg KH @ 2010-12-09 18:19 UTC (permalink / raw)
  To: avagin
  Cc: Greg Kroah-Hartman, krkumar2, avagin, eric.dumazet, netdev, mjt,
	David Miller, stable

On Thu, Dec 09, 2010 at 09:43:03AM +0300, avagin@gmail.com wrote:
> I add the patch in attachments

Ok, thanks, I'll queue it up for the next .32 release after this one.

greg k-h

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

* Re: [stable] [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too
  2010-12-09 18:19                   ` Greg KH
@ 2010-12-21  0:07                     ` Greg KH
  0 siblings, 0 replies; 13+ messages in thread
From: Greg KH @ 2010-12-21  0:07 UTC (permalink / raw)
  To: avagin
  Cc: Greg Kroah-Hartman, krkumar2, avagin, eric.dumazet, netdev, mjt,
	David Miller, stable

On Thu, Dec 09, 2010 at 10:19:37AM -0800, Greg KH wrote:
> On Thu, Dec 09, 2010 at 09:43:03AM +0300, avagin@gmail.com wrote:
> > I add the patch in attachments
> 
> Ok, thanks, I'll queue it up for the next .32 release after this one.

Now applied.

greg k-h

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

end of thread, other threads:[~2010-12-21  0:14 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-10-11 15:20 [STABLE 2.6.32 PATCH] net: release dst entry while cache-hot for GSO case too Andrey Vagin
2010-10-11 15:40 ` Michael Tokarev
2010-10-11 15:46   ` Eric Dumazet
2010-10-11 15:59     ` David Miller
2010-10-11 16:19       ` Andrew Vagin
2010-10-11 16:30         ` Eric Dumazet
2010-10-11 16:55           ` Michael Tokarev
2010-10-26 18:54           ` David Miller
2010-12-08 22:47             ` avagin
2010-12-08 23:05               ` Greg KH
2010-12-09  6:43                 ` [stable] " avagin
2010-12-09 18:19                   ` Greg KH
2010-12-21  0:07                     ` Greg KH

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.