* [BUG net-next] infamous dev refcnt leak... again.
@ 2015-08-14 21:14 Eric Dumazet
2015-08-14 23:14 ` Eric Dumazet
0 siblings, 1 reply; 8+ messages in thread
From: Eric Dumazet @ 2015-08-14 21:14 UTC (permalink / raw)
To: David Miller; +Cc: netdev
While rebooting host running latest net-next
unregister_netdevice: waiting for eth0 to become free. Usage count = 4
Oh well...
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [BUG net-next] infamous dev refcnt leak... again.
2015-08-14 21:14 [BUG net-next] infamous dev refcnt leak... again Eric Dumazet
@ 2015-08-14 23:14 ` Eric Dumazet
2015-08-14 23:19 ` David Ahern
0 siblings, 1 reply; 8+ messages in thread
From: Eric Dumazet @ 2015-08-14 23:14 UTC (permalink / raw)
To: David Miller, David Ahern; +Cc: netdev
On Fri, 2015-08-14 at 14:14 -0700, Eric Dumazet wrote:
> While rebooting host running latest net-next
>
> unregister_netdevice: waiting for eth0 to become free. Usage count = 4
>
> Oh well...
>
It looks like David Ahern recent changes uncover a bug ?
Not clear which commit is at fault.
Maybe 3bfd847203c6d89532f836ad3f5b4ff4ced26dd9 ?
Somehow a down device can be found.
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
index b7f1d20..675a3b6 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -725,10 +725,14 @@ static int fib_check_nh(struct fib_config *cfg, struct fib_info *fi,
nh->nh_dev = dev = FIB_RES_DEV(res);
if (!dev)
goto out;
- dev_hold(dev);
if (!netif_carrier_ok(dev))
nh->nh_flags |= RTNH_F_LINKDOWN;
- err = (dev->flags & IFF_UP) ? 0 : -ENETDOWN;
+ if (dev->flags & IFF_UP) {
+ err = 0;
+ dev_hold(dev);
+ } else {
+ err = -ENETDOWN;
+ }
} else {
struct in_device *in_dev;
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [BUG net-next] infamous dev refcnt leak... again.
2015-08-14 23:14 ` Eric Dumazet
@ 2015-08-14 23:19 ` David Ahern
2015-08-14 23:31 ` Eric Dumazet
0 siblings, 1 reply; 8+ messages in thread
From: David Ahern @ 2015-08-14 23:19 UTC (permalink / raw)
To: Eric Dumazet, David Miller; +Cc: netdev
On 8/14/15 5:14 PM, Eric Dumazet wrote:
> On Fri, 2015-08-14 at 14:14 -0700, Eric Dumazet wrote:
>> While rebooting host running latest net-next
>>
>> unregister_netdevice: waiting for eth0 to become free. Usage count = 4
>>
>> Oh well...
>>
>
> It looks like David Ahern recent changes uncover a bug ?
>
> Not clear which commit is at fault.
>
> Maybe 3bfd847203c6d89532f836ad3f5b4ff4ced26dd9 ?
>
> Somehow a down device can be found.
Can you elaborate on what you are doing to see the refcnt leak? I have
not seen that at all. I have to leave for soccer carpool in 45 minutes
or so, but can take a look this weekend.
David
>
> diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
> index b7f1d20..675a3b6 100644
> --- a/net/ipv4/fib_semantics.c
> +++ b/net/ipv4/fib_semantics.c
> @@ -725,10 +725,14 @@ static int fib_check_nh(struct fib_config *cfg, struct fib_info *fi,
> nh->nh_dev = dev = FIB_RES_DEV(res);
> if (!dev)
> goto out;
> - dev_hold(dev);
> if (!netif_carrier_ok(dev))
> nh->nh_flags |= RTNH_F_LINKDOWN;
> - err = (dev->flags & IFF_UP) ? 0 : -ENETDOWN;
> + if (dev->flags & IFF_UP) {
> + err = 0;
> + dev_hold(dev);
> + } else {
> + err = -ENETDOWN;
> + }
> } else {
> struct in_device *in_dev;
>
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [BUG net-next] infamous dev refcnt leak... again.
2015-08-14 23:19 ` David Ahern
@ 2015-08-14 23:31 ` Eric Dumazet
2015-08-15 0:26 ` Eric Dumazet
2015-08-15 17:54 ` [PATCH net-next] ipv4: fix refcount leak in fib_check_nh() Eric Dumazet
0 siblings, 2 replies; 8+ messages in thread
From: Eric Dumazet @ 2015-08-14 23:31 UTC (permalink / raw)
To: David Ahern; +Cc: David Miller, netdev
On Fri, 2015-08-14 at 17:19 -0600, David Ahern wrote:
> On 8/14/15 5:14 PM, Eric Dumazet wrote:
> > On Fri, 2015-08-14 at 14:14 -0700, Eric Dumazet wrote:
> >> While rebooting host running latest net-next
> >>
> >> unregister_netdevice: waiting for eth0 to become free. Usage count = 4
> >>
> >> Oh well...
> >>
> >
> > It looks like David Ahern recent changes uncover a bug ?
> >
> > Not clear which commit is at fault.
> >
> > Maybe 3bfd847203c6d89532f836ad3f5b4ff4ced26dd9 ?
> >
> > Somehow a down device can be found.
>
> Can you elaborate on what you are doing to see the refcnt leak? I have
> not seen that at all. I have to leave for soccer carpool in 45 minutes
> or so, but can take a look this weekend.
I simply reboot my host. eth0 device can not be dismantled and block the
reboot, I gave to reset the host.
I get the issue every time.
I confirm reverting 3bfd847203c6d89532f836ad3f5b4ff4ced26dd9
removes the issue for me.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [BUG net-next] infamous dev refcnt leak... again.
2015-08-14 23:31 ` Eric Dumazet
@ 2015-08-15 0:26 ` Eric Dumazet
2015-08-15 17:54 ` [PATCH net-next] ipv4: fix refcount leak in fib_check_nh() Eric Dumazet
1 sibling, 0 replies; 8+ messages in thread
From: Eric Dumazet @ 2015-08-15 0:26 UTC (permalink / raw)
To: David Ahern; +Cc: David Miller, netdev
On Fri, 2015-08-14 at 16:31 -0700, Eric Dumazet wrote:
>
> I simply reboot my host. eth0 device can not be dismantled and block the
> reboot, I gave to reset the host.
>
> I get the issue every time.
>
> I confirm reverting 3bfd847203c6d89532f836ad3f5b4ff4ced26dd9
> removes the issue for me.
>
Also, netif_index_is_vrf() is supposed to be called under rcu,
but it is not the case from net/ipv4/udp.c , and ip_route_connect_init()
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH net-next] ipv4: fix refcount leak in fib_check_nh()
2015-08-14 23:31 ` Eric Dumazet
2015-08-15 0:26 ` Eric Dumazet
@ 2015-08-15 17:54 ` Eric Dumazet
2015-08-15 20:36 ` David Ahern
2015-08-17 5:14 ` David Miller
1 sibling, 2 replies; 8+ messages in thread
From: Eric Dumazet @ 2015-08-15 17:54 UTC (permalink / raw)
To: David Ahern; +Cc: David Miller, netdev
From: Eric Dumazet <edumazet@google.com>
fib_lookup() forces FIB_LOOKUP_NOREF flag, while fib_table_lookup()
does not.
This patch solves the typical message at reboot time or device
dismantle :
unregister_netdevice: waiting for eth0 to become free. Usage count = 4
Fixes: 3bfd847203c6 ("net: Use passed in table for nexthop lookups")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: David Ahern <dsa@cumulusnetworks.com>
---
net/ipv4/fib_semantics.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
index b7f1d20a9615..c8025851dac7 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -708,7 +708,8 @@ static int fib_check_nh(struct fib_config *cfg, struct fib_info *fi,
if (tbl)
err = fib_table_lookup(tbl, &fl4, &res,
- FIB_LOOKUP_IGNORE_LINKSTATE);
+ FIB_LOOKUP_IGNORE_LINKSTATE |
+ FIB_LOOKUP_NOREF);
else
err = fib_lookup(net, &fl4, &res,
FIB_LOOKUP_IGNORE_LINKSTATE);
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH net-next] ipv4: fix refcount leak in fib_check_nh()
2015-08-15 17:54 ` [PATCH net-next] ipv4: fix refcount leak in fib_check_nh() Eric Dumazet
@ 2015-08-15 20:36 ` David Ahern
2015-08-17 5:14 ` David Miller
1 sibling, 0 replies; 8+ messages in thread
From: David Ahern @ 2015-08-15 20:36 UTC (permalink / raw)
To: Eric Dumazet; +Cc: David Miller, netdev
On 8/15/15 11:54 AM, Eric Dumazet wrote:
> From: Eric Dumazet <edumazet@google.com>
>
> fib_lookup() forces FIB_LOOKUP_NOREF flag, while fib_table_lookup()
> does not.
>
> This patch solves the typical message at reboot time or device
> dismantle :
>
> unregister_netdevice: waiting for eth0 to become free. Usage count = 4
>
> Fixes: 3bfd847203c6 ("net: Use passed in table for nexthop lookups")
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Cc: David Ahern <dsa@cumulusnetworks.com>
Still puzzled why I was not seeing the refcnt problem at reboot though I
did see the extra dev_hold when I instrumented the hold and put.
Anyways, thanks for resolving, Eric.
Acked-by: David Ahern <dsa@cumulusnetworks.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH net-next] ipv4: fix refcount leak in fib_check_nh()
2015-08-15 17:54 ` [PATCH net-next] ipv4: fix refcount leak in fib_check_nh() Eric Dumazet
2015-08-15 20:36 ` David Ahern
@ 2015-08-17 5:14 ` David Miller
1 sibling, 0 replies; 8+ messages in thread
From: David Miller @ 2015-08-17 5:14 UTC (permalink / raw)
To: eric.dumazet; +Cc: dsa, netdev
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Sat, 15 Aug 2015 10:54:07 -0700
> From: Eric Dumazet <edumazet@google.com>
>
> fib_lookup() forces FIB_LOOKUP_NOREF flag, while fib_table_lookup()
> does not.
>
> This patch solves the typical message at reboot time or device
> dismantle :
>
> unregister_netdevice: waiting for eth0 to become free. Usage count = 4
>
> Fixes: 3bfd847203c6 ("net: Use passed in table for nexthop lookups")
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Cc: David Ahern <dsa@cumulusnetworks.com>
Applied, thanks Eric.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-08-17 5:14 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-14 21:14 [BUG net-next] infamous dev refcnt leak... again Eric Dumazet
2015-08-14 23:14 ` Eric Dumazet
2015-08-14 23:19 ` David Ahern
2015-08-14 23:31 ` Eric Dumazet
2015-08-15 0:26 ` Eric Dumazet
2015-08-15 17:54 ` [PATCH net-next] ipv4: fix refcount leak in fib_check_nh() Eric Dumazet
2015-08-15 20:36 ` David Ahern
2015-08-17 5:14 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox