Subject: Patch ported from LTC bugzilla report 31558 From: sri@us.ibm.com We saw similar stack traces with RHEL5 on zSeries(bug #28338) and iSeries(bug #29263). There definitely seems to be some bugs in the ipv6 fib insertion code. Redhat decided to work around this bug by disabling round-robin routing with ipv6 until the fib management code is fixed. The following patch does this. Acked-by: Linas Vepstas Signed-off-by: Arnd Bergmann ---- net/ipv6/route.c | 10 ++++++++++ 1 file changed, 10 insertions(+) Index: linux-cg/net/ipv6/route.c =================================================================== --- linux-cg.orig/net/ipv6/route.c +++ linux-cg/net/ipv6/route.c @@ -410,6 +410,15 @@ static struct rt6_info *rt6_select(struc match = find_rr_leaf(fn, rt0, rt0->rt6i_metric, oif, strict); +#if 0 + /* + * The round-robin code below assumes and produces cyclic + * leaf lists. Some code in ip6_fib.c expects and produces + * NULL terminated lists which leads to the current leaf + * head to turn NULL when the end of the list is being + * reached. It's best to disable this code alltogether until + * all of the list management has been fixed. + */ if (!match && (strict & RT6_LOOKUP_F_REACHABLE)) { struct rt6_info *next = rt0->u.dst.rt6_next; @@ -421,6 +430,7 @@ static struct rt6_info *rt6_select(struc if (next != rt0) fn->rr_ptr = next; } +#endif RT6_TRACE("%s() => %p\n", __FUNCTION__, match);