Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-10 Thread David Ahern
On 9/8/16 6:35 PM, Jojy Varghese wrote: > Thanks for the feedback guys. I appreciate it. > > I am working with 4.4.3 kernel. I will try to reproduce the issue > with the kernel tree at > https://git.kernel.org/cgit/linux/kernel/git/davem/net.git. > > In the meantime, the only data I have now is

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread Eric Dumazet
On Thu, 2016-09-08 at 17:35 -0700, Jojy Varghese wrote: > Thanks for the feedback guys. I appreciate it. > > I am working with 4.4.3 kernel. I will try to reproduce the issue > with the kernel tree at > https://git.kernel.org/cgit/linux/kernel/git/davem/net.git. > Good. Please do not top post

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread David Miller
From: Jojy Varghese Date: Thu, 8 Sep 2016 17:35:08 -0700 > - "dst-ifdown" does not look correct since it will never release > reference to loopback device. The routes and packets in the namespace are purged and disappear when the namespace goes down, and that's how all of the references to the

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread Jojy Varghese
Thanks for the feedback guys. I appreciate it. I am working with 4.4.3 kernel. I will try to reproduce the issue with the kernel tree at https://git.kernel.org/cgit/linux/kernel/git/davem/net.git. In the meantime, the only data I have now is : - "dst-ifdown" does not look correct since it will

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread David Miller
From: Jojy Varghese Date: Thu, 8 Sep 2016 16:33:38 -0700 > Sorry last patch was just the delta over my original patch. Here is > the complete patch: It looks like you are grasping at straws. Please slow down and take the time to debug this properly. All of the mechanisms exist to make these re

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread Eric Dumazet
On Thu, 2016-09-08 at 16:33 -0700, Jojy Varghese wrote: > Sorry last patch was just the delta over my original patch. Here is > the complete patch: > > --- > net/core/dst.c | 7 +-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/net/core/dst.c b/net/core/dst.c > index a16

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread Eric Dumazet
On Thu, 2016-09-08 at 16:16 -0700, Jojy Varghese wrote: > The dst's do disappear but the net device does not. A better solution > is to only hold reference to dst's net device ONLY if it is not a > loopback device. In the case of the loopback device, we want to do > only a "put" on it and skip the

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread Jojy Varghese
Sorry last patch was just the delta over my original patch. Here is the complete patch: --- net/core/dst.c | 7 +-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/net/core/dst.c b/net/core/dst.c index a1656e3..f63027e 100644 --- a/net/core/dst.c +++ b/net/core/dst.c @@ -433,8 +

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread Jojy Varghese
The dst's do disappear but the net device does not. A better solution is to only hold reference to dst's net device ONLY if it is not a loopback device. In the case of the loopback device, we want to do only a "put" on it and skip the "hold". Updating the patch below: --- net/core/dst.c | 7 +++-

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread Eric Dumazet
On Thu, 2016-09-08 at 15:12 -0700, Jojy Varghese wrote: > Hi Eric/Lance > > Thanks for taking time to look at the patch. The problem in dst.c's > "dst_ifdown" is that it will never do an actual "dev_put" on the > loopback net device. This results in the loopback net device to be > alive even when

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread Jojy Varghese
Hi Eric/Lance Thanks for taking time to look at the patch. The problem in dst.c's "dst_ifdown" is that it will never do an actual "dev_put" on the loopback net device. This results in the loopback net device to be alive even when the dst goes away. Thanks Jojy On Thu, Sep 8, 2016 at 2:05 PM, Er

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread Eric Dumazet
On Thu, 2016-09-08 at 14:00 -0700, Eric Dumazet wrote: > Latest real fix was : > https://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit/?id=751eb6b6042a596b0080967c1a529a9fe98dac1d Another interesting fix is https://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit/?id=a5d0dc

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread Eric Dumazet
On Thu, 2016-09-08 at 12:08 -0700, Jojy Varghese wrote: > (Updating the patch for the case when a non-loopback dev could be > unregistered) > > Currently during namespace cleanup, if ‘dst’ subsystem is holding > a reference to the interface in the namespace, it does not get released. > Current co

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread Lance Richardson
> From: "Jojy Varghese" > To: netdev@vger.kernel.org > Cc: da...@davemloft.net > Sent: Thursday, September 8, 2016 3:08:29 PM > Subject: Re: [PATCH] net_namespace: fixed net_device reference leak > > (Updating the patch for the case when a non-loopback dev could be

Re: [PATCH] net_namespace: fixed net_device reference leak

2016-09-08 Thread Jojy Varghese
(Updating the patch for the case when a non-loopback dev could be unregistered) Currently during namespace cleanup, if ‘dst’ subsystem is holding a reference to the interface in the namespace, it does not get released. Current code first does a ’dev_hold’ on the same device followed by a ‘dev_put’

[PATCH] net_namespace: fixed net_device reference leak

2016-09-07 Thread Jojy Varghese
During namespace cleanup, if ‘dst’ subsystem is holding a reference to the loopback interface in the namespace, it does not get released. This is because in the case where the net_device held by 'dst' is same as the namespace's loopback net_device, current code first does a ’dev_hold’ on the same d