Thread (29 messages) flat view 29 messages, 4 authors, 2017-09-20

Re: Latest net-next from GIT panic

From: Paweł Staszewski <hidden>
Date: 2017-09-20 18:00:59

Possibly related (same subject, not in this thread)


W dniu 2017-09-20 o 19:46, Wei Wang pisze:
quoted
quoted
This is why I suggested to replace the BUG() in another mail

So :
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index
f535779d9dc1dfe36934c2abba4e43d053ac5d6f..220cd12456754876edf2d3ef13195e82d70d5c74
100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -3331,7 +3331,15 @@ void netdev_run_todo(void);
    */
   static inline void dev_put(struct net_device *dev)
   {
-       this_cpu_dec(*dev->pcpu_refcnt);
+       int __percpu *pref = READ_ONCE(dev->pcpu_refcnt);
+
+       if (!pref) {
+               pr_err("no pcpu_refcnt on dev %p(%s) state %d dismantle
%d\n",
+                      dev, dev->name, dev->reg_state, dev->dismantle);
+               for (;;)
+                       cpu_relax();
+       }
+       this_cpu_dec(*pref);
   }
     /**
Thanks a lot Eric for the debug patch.

Pawel,

I want to confirm with you about the last good commit when you did bisection.
You mentioned:
quoted
And the last one

git bisect good
Bisecting: 1 revision left to test after this (roughly 1 step)
[1cfb71eeb12047bcdbd3e6730ffed66e810a0855] ipv6: take dst->__refcnt for
insertion into fib6 tree

With this have kernel panic same as always

git bisect bad
Bisecting: 0 revisions left to test after this (roughly 0 steps)
[b838d5e1c5b6e57b10ec8af2268824041e3ea911] ipv4: mark DST_NOGC and
remove the operation of dst_free()
So it breaks right at:
[b838d5e1c5b6e57b10ec8af2268824041e3ea911] ipv4: mark DST_NOGC and
remove the operation of dst_free()
Right?
If you sync the image to one commit before the above one:
[9df16efadd2a8a82731dc76ff656c771e261827f] ipv4: call dst_hold_safe() properly
Does it crash?
Later today i will repeat last three steps - in about next 3 hours after 
rush hours of internet traffic - now i cant touch backup router  :)
And could you confirm that your config does not have any IPv6
addresses or routes configured?
There is ipv6 enabled
And yes there are some ipv6 ip's
One interface have ipv6 enabled with one static route

  but no ipv6 bgp sessions - so nt many ipv6 prefixes and ipv6 fib is 
almost empty

ip -6 r ls | wc -l
57

Thanks.
Wei


6:03 +0200, Paweł Staszewski wrote:
quoted
quoted
quoted
Nit much more after adding this patch

https://bugzilla.kernel.org/attachment.cgi?id=258529
This is why I suggested to replace the BUG() in another mail

So :
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index
f535779d9dc1dfe36934c2abba4e43d053ac5d6f..220cd12456754876edf2d3ef13195e82d70d5c74
100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -3331,7 +3331,15 @@ void netdev_run_todo(void);
    */
   static inline void dev_put(struct net_device *dev)
   {
-       this_cpu_dec(*dev->pcpu_refcnt);
+       int __percpu *pref = READ_ONCE(dev->pcpu_refcnt);
+
+       if (!pref) {
+               pr_err("no pcpu_refcnt on dev %p(%s) state %d dismantle
%d\n",
+                      dev, dev->name, dev->reg_state, dev->dismantle);
+               for (;;)
+                       cpu_relax();
+       }
+       this_cpu_dec(*pref);
   }
     /**

Full panic

https://bugzilla.kernel.org/attachment.cgi?id=258531


I will change patch and apply but later today cause now cant use backup
router as testlab - Internet rush hours if something happens this will be
bed when second router will have bugged kernel :)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help