Bug 147075

Summary: IPv6 broken (xfrm_lookup: IPv4 route is stale)
Product: [openSUSE] SUSE Linux 10.1 Reporter: Jiri Bohac <jbohac>
Component: KernelAssignee: Olaf Kirch <okir>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Critical    
Priority: P5 - None CC: charles_rose, coolo, Daniel.Ottey, forgotten__6pKDtGqg1, ihno, jsmeix
Version: Beta 2   
Target Milestone: ---   
Hardware: i386   
OS: SuSE Linux 10.0   
Whiteboard:
Found By: Other Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Jiri Bohac 2006-01-31 19:48:08 UTC
I hit this with today's KOTD when doing some IPv6 testing. It's not possible to ping to offlink hosts. dmesg shows:

xfrm_lookup: IPv4 route is stale (obsolete=4294967295, loops=0)
 [<c0279deb>] xfrm_lookup+0x403/0x481
 [<e142878b>] ipv6_dev_get_saddr+0x4ff/0x585 [ipv6]
 [<e142456a>] ip6_dst_lookup+0x1e7/0x250 [ipv6]
 [<e14409a8>] ip6_datagram_connect+0x2e5/0x418 [ipv6]
 [<c022d6d5>] release_sock+0x10/0x9b
 [<c026cb37>] inet_dgram_connect+0x45/0x4e
 [<c022cbf2>] sys_connect+0x76/0x98
 [<c014db91>] fd_install+0x24/0x50
 [<c022c353>] sock_map_fd+0x10d/0x117
 [<c022bba8>] __sock_create+0x15d/0x1a2
 [<c022cd2f>] sys_socketcall+0x8c/0x19e
 [<c0102a3b>] sysenter_past_esp+0x54/0x79

I'll try to take care of this, building a test kernel with some debug printks right now. I submited it to bugzilla just in case someone else hits it as well.
Comment 1 Andreas Kleen 2006-02-01 10:20:30 UTC
*** Bug 147206 has been marked as a duplicate of this bug. ***
Comment 2 Andreas Kleen 2006-02-01 10:21:57 UTC
What happens when you use a kerneltest kernel that doesn't include that 
change yet?
-------------------------------------------------------------------
Mon Jan 30 17:23:51 CET 2006 - okir@suse.de

- patches.fixes/xfrm-endless-loop: Try to fix infinite loop in
  xfrm_lookup (117749, 115200).
Comment 3 Dirk Mueller 2006-02-01 10:53:41 UTC
the one before that patch works fine
Comment 4 Dirk Mueller 2006-02-01 10:54:08 UTC
kernel-smp-2.6.16_rc1_git3-20060130145842 (x86_64)
Comment 5 Andreas Kleen 2006-02-01 11:13:36 UTC
Ok I will drop it from CVS then for beta3 until Olaf debugs it.

Comment 6 Andreas Kleen 2006-02-01 12:27:57 UTC
*** Bug 147040 has been marked as a duplicate of this bug. ***
Comment 7 Andreas Kleen 2006-02-01 12:28:35 UTC
It's dropped.
Comment 8 Jiri Bohac 2006-02-01 13:59:53 UTC
I confirm that Olaf's patch mentioned in #2 is the culprit. I reverted the single patch and IPv6 started to work.

Olaf: I don't quite understand the difference between dst->obsolete being set to 0 and -1, but it's initialized to -1 by ip6_route_add() and that's where your check fails. Maybe you want to test for dst->obsolete > 0 instead of != 0 ?
Comment 9 Andreas Kleen 2006-02-01 15:52:45 UTC
I guess we can lower the severity since the patch is dropped now.
Maybe it would be better to reopen the original bug that lead to the 
broken patch and close this one.
Comment 10 Chris L Mason 2006-02-01 16:34:24 UTC
That would be our old friend the hanging ipsec bug.  Should still be open I think.
Comment 11 Hannes Reinecke 2006-02-02 09:15:02 UTC
Sorry, but this hits us badly on S/390 with Beta3. X11 installation via CTC is basically unuseable.
Comment 12 Olaf Kirch 2006-02-02 12:22:41 UTC
Well well well... I think I deserve this for giving in to requests to
add what was essentially a debug patch :-/

Comment 13 Jiri Bohac 2006-02-03 22:11:43 UTC
*** Bug 147656 has been marked as a duplicate of this bug. ***
Comment 14 Andreas Kleen 2006-02-04 07:48:11 UTC
*** Bug 148120 has been marked as a duplicate of this bug. ***
Comment 15 Olaf Kirch 2006-02-07 11:35:20 UTC
*** Bug 148653 has been marked as a duplicate of this bug. ***
Comment 16 Olaf Kirch 2006-02-07 11:41:20 UTC
An updated xfrm-lookup patch is now in CVS