Subject: linux-next: powerpc boot failure

From: Stephen Rothwell <[email-masked]>
Date: Thu, 8 Apr 2010 16:58:48 +1000

Hi ,

Today's linux-next (20100408) failed a powerpc boot test like this:

[While bringing up the network interfaces ...]

Unable to handle kernel paging request for data at address 0x200000025
Faulting instruction address: 0xc00000000053d32c
cpu 0x5: Vector: 300 (Data Access) at [c0000000bb277680]
    pc: c00000000053d32c: .__xfrm_lookup+0x32c/0x4c0
    lr: c0000000004e6e10: .ip_route_output_flow+0xb0/0x300
    sp: c0000000bb277900
   msr: 8000000000009032
   dar: 200000025
 dsisr: 40000000
  current = 0xc0000000bce55640
  paca    = 0xc000000007691a00
    pid   = 4106, comm = ntpdate
[c0000000bb277a20] c0000000004e6e10 .ip_route_output_flow+0xb0/0x300
[c0000000bb277ad0] c0000000005158c8 .ip4_datagram_connect+0x1a8/0x2f0
[c0000000bb277bd0] c000000000523dc0 .inet_dgram_connect+0x80/0x110
[c0000000bb277c60] c0000000004a6904 .SyS_connect+0xa4/0xf0
[c0000000bb277d90] c0000000004d5f48 .compat_sys_socketcall+0x128/0x2f0
[c0000000bb277e30] c00000000000852c syscall_exit+0x0/0x40

The most obvious suspect is commit
80c802f3073e84c956846e921e8a0b02dfa3755f ("xfrm: cache bundles instead of
policies for outgoing flows") and the couple of commits around that
(these are new to linux-next today).

The above pc is in this piece of code (I think - I don't have the actual
kernel) from __xfrm_lookup (in net/xfrm/xfrm_policy.c):

        if ((flags & XFRM_LOOKUP_ICMP) &&
            !(pols[0]->flags & XFRM_POLICY_ICMP)) {
                err = -ENOENT;
                goto error;
        }

        for (i = 0; i < num_pols; i++)
                pols[i]->curlft.use_time = get_seconds(); <-------- (line 1845)

And the 0x200000025 is probably &(pols[i]) (which actually seems unlikely
since pols is an array on the stack).
-- 
Cheers,
Stephen Rothwell                    [email-masked]
http://www.canb.auug.org.au/~sfr/