NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/49410: -current: panic: "KERNEL_LOCKED_P()" failed: file ".../if_loop.c", line 221



The following reply was made to PR kern/49410; it has been noted by GNATS.

From: Ryota Ozaki <ozaki-r%netbsd.org@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: kern-bug-people%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Subject: Re: kern/49410: -current: panic: "KERNEL_LOCKED_P()" failed: file
 ".../if_loop.c", line 221
Date: Sun, 23 Nov 2014 20:12:49 +0900

 On Sun, Nov 23, 2014 at 12:35 AM,  <kardel%netbsd.org@localhost> wrote:
 >>Number:         49410
 >>Category:       kern
 >>Synopsis:       -current MROUTING enabled kernel panics in if_loop.c:221 with KERNEL_LOCKED_P assertion
 >>Confidential:   no
 >>Severity:       serious
 >>Priority:       high
 >>Responsible:    kern-bug-people
 >>State:          open
 >>Class:          sw-bug
 >>Submitter-Id:   net
 >>Arrival-Date:   Sat Nov 22 15:35:00 +0000 2014
 >>Originator:     Charlie Root
 >>Release:        NetBSD 7.99.1
 >>Organization:
 >>Environment:
 > System: NetBSD gateway.kardel.name 7.99.1 NetBSD 7.99.1 (GATEWAY) #21: Sat Nov 22 13:49:32 CET 2014 kardel%pip.kardel.name@localhost:/fs/raid1a/src/NetBSD/cur/src/obj.amd64/sys/arch/amd64/compile/GATEWAY amd64
 > Architecture: x86_64
 > Machine: amd64
 >>Description:
 >         A -current kernel with multicast support panics due to locking error.
 >
 > panic: kernel diagnostic assertion "KERNEL_LOCKED_P()" failed: file "/fs/raid1a/src/NetBSD/cur/src/sys/net/if_loop.c", line 221
 > cpu1: Begin traceback...
 > vpanic() at netbsd:vpanic+0x13c
 > kern_assert() at netbsd:kern_assert+0x4f
 > looutput() at netbsd:looutput+0x39e
 > ip_output() at netbsd:ip_output+0x8b0
 > igmp_sendpkt.isra.1() at netbsd:igmp_sendpkt.isra.1+0x117
 > igmp_fasttimo() at netbsd:igmp_fasttimo+0xb3
 > pffasttimo() at netbsd:pffasttimo+0x31
 > callout_softclock() at netbsd:callout_softclock+0x1d0
 > softint_dispatch() at netbsd:softint_dispatch+0xd3
 >>How-To-Repeat:
 >         pick -current kernel with MROUTING enabled and run with
 >         multicast services like mrouted and multiple interfaces
 >         and watch it panic while trying to reach multi user.
 >>Fix:
 >         With MROUTING disabled the kernel will survive the startup
 >         but that is not the solution.
 
 Thank you for the report. A possible fix is the below patch.
 I'm still checking whether the place I put KERNEL_LOCK is appropriate
 or not, anyway it should fix the assertion failure.
 
 Regards,
   ozaki-r
 
 diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c
 index a92c61b..4d31253 100644
 --- a/sys/netinet/ip_output.c
 +++ b/sys/netinet/ip_output.c
 @@ -1713,5 +1713,7 @@ ip_mloopback(struct ifnet *ifp, struct mbuf *m,
 const struct sockaddr_in *dst)
 
   ip->ip_sum = 0;
   ip->ip_sum = in_cksum(copym, ip->ip_hl << 2);
 + KERNEL_LOCK(1, NULL);
   (void)looutput(ifp, copym, sintocsa(dst), NULL);
 + KERNEL_UNLOCK_ONE(NULL);
  }
 


Home | Main Index | Thread Index | Old Index