NetBSD Problem Report #54314

From kardel@Kardel.name  Thu Jun 20 13:38:14 2019
Return-Path: <kardel@Kardel.name>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
	by mollari.NetBSD.org (Postfix) with ESMTPS id 361547A1C1
	for <gnats-bugs@gnats.NetBSD.org>; Thu, 20 Jun 2019 13:38:14 +0000 (UTC)
Message-Id: <20190620133739.EC62144B33@Andromeda.Kardel.name>
Date: Thu, 20 Jun 2019 15:37:39 +0200 (CEST)
From: kardel@netbsd.org
Reply-To: kardel@netbsd.org
To: gnats-bugs@NetBSD.org
Subject: -current (20190619) NPF load LOCKDEBUG panics LOCKDEBUG: Mutex error: assert_sleepable,70: spin lock held
X-Send-Pr-Version: 3.95

>Number:         54314
>Category:       kern
>Synopsis:       LOCKDEBUG: Mutex error: assert_sleepable,70: spin lock held when loading NPF
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    kern-bug-people
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Jun 20 13:40:00 +0000 2019
>Closed-Date:    Thu Jun 20 20:48:06 +0000 2019
>Last-Modified:  Thu Jun 20 20:50:01 +0000 2019
>Originator:     Frank Kardel
>Release:        NetBSD 8.99.46
>Organization:

>Environment:


System: NetBSD pip.kardel.name 8.99.46 NetBSD 8.99.46 (GENERIC) #1: Wed Jun 19 16:46:35 CEST 2019 kardel@pip.kardel.name:/src/NetBSD/cur/src/obj.amd64/sys/arch/amd64/compile/GENERIC amd64
Architecture: x86_64
Machine: amd64
>Description:
	When loading the npf configuration a LOCKDEBUG kernel panics
	with
(gdb) bt
#0  0xffffffff80222c25 in cpu_reboot (howto=howto@entry=260, bootstr=bootstr@entry=0x0) at /src/NetBSD/cur/src/sys/arch/amd64/amd64/machdep.c:728
#1  0xffffffff80a24516 in vpanic (fmt=fmt@entry=0xffffffff81421310 "LOCKDEBUG: %s error: %s,%zu: %s", ap=ap@entry=0xffffc40495822a28)
    at /src/NetBSD/cur/src/sys/kern/subr_prf.c:336
#2  0xffffffff80a245c7 in panic (fmt=fmt@entry=0xffffffff81421310 "LOCKDEBUG: %s error: %s,%zu: %s") at /src/NetBSD/cur/src/sys/kern/subr_prf.c:255
#3  0xffffffff80a19dca in lockdebug_abort1 (func=0xffffffff812a4920 <__func__.6294> "assert_sleepable", line=70, ld=0xffffc400846eee30, s=6,
    msg=0xffffffff81421173 "spin lock held", dopanic=<optimized out>) at /src/NetBSD/cur/src/sys/kern/subr_lockdebug.c:811
#4  0xffffffff809cd151 in assert_sleepable () at /src/NetBSD/cur/src/sys/kern/kern_lock.c:70
#5  0xffffffff80a22450 in pool_cache_get_paddr (pc=0xffff861b7d9e9440, flags=flags@entry=1, pap=pap@entry=0x0) at /src/NetBSD/cur/src/sys/kern/subr_pool.c:2443
#6  0xffffffff80a16a22 in kmem_intr_alloc (requested_size=requested_size@entry=32, kmflags=kmflags@entry=1) at /src/NetBSD/cur/src/sys/kern/subr_kmem.c:268
#7  0xffffffff80a16c91 in kmem_intr_zalloc (size=size@entry=32, kmflags=kmflags@entry=1) at /src/NetBSD/cur/src/sys/kern/subr_kmem.c:289
#8  0xffffffff80a17024 in kmem_zalloc (size=size@entry=32, kmflags=kmflags@entry=1) at /src/NetBSD/cur/src/sys/kern/subr_kmem.c:375
#9  0xffffffff80799162 in table_ifaddr_insert (ent=0xffff861b6c76bfd8, alen=<optimized out>, t=0xffff861b6da0c6d0) at /src/NetBSD/cur/src/sys/net/npf/npf_tableset.c:516
#10 npf_table_insert (t=t@entry=0xffff861b6da0c6d0, alen=<optimized out>, addr=addr@entry=0xffffc40495822c60, mask=mask@entry=255 '\377')
    at /src/NetBSD/cur/src/sys/net/npf/npf_tableset.c:593
#11 0xffffffff807a174e in npf_ifaddr_sync (npf=npf@entry=0xffff860c907685f8, ifp=ifp@entry=0xffff860c80699868) at /src/NetBSD/cur/src/sys/net/npf/npf_ifaddr.c:144
#12 0xffffffff807a1840 in npf_ifaddr_syncall (npf=npf@entry=0xffff860c907685f8) at /src/NetBSD/cur/src/sys/net/npf/npf_ifaddr.c:175
#13 0xffffffff80793074 in npf_config_load (npf=npf@entry=0xffff860c907685f8, rset=0xfffffffffffffc69, tset=0xffff860c907685f8, nset=0xffff860c80699868,
    rpset=<optimized out>, conns=<optimized out>, flush=false) at /src/NetBSD/cur/src/sys/net/npf/npf_conf.c:186
#14 0xffffffff807942e5 in npfctl_load_nvlist (errdict=0xffff861b6dfa7090, npf_dict=0xffff861b6de65290, npf=0xffff860c907685f8)
    at /src/NetBSD/cur/src/sys/net/npf/npf_ctl.c:565
#15 npfctl_load (npf=0xffff860c907685f8, cmd=<optimized out>, data=0xffffc40495822ee0) at /src/NetBSD/cur/src/sys/net/npf/npf_ctl.c:608
#16 0xffffffff80a96170 in VOP_IOCTL (vp=vp@entry=0xffff861b6e480430, command=command@entry=3222818406, data=data@entry=0xffffc40495822ee0, fflag=<optimized out>,
    cred=<optimized out>) at /src/NetBSD/cur/src/sys/kern/vnode_if.c:610
#17 0xffffffff80a8cae3 in vn_ioctl (fp=0xffff861b6ca78600, com=3222818406, data=0xffffc40495822ee0) at /src/NetBSD/cur/src/sys/kern/vfs_vnops.c:772
#18 0xffffffff80a33168 in sys_ioctl (l=<optimized out>, uap=0xffffc40495823000, retval=<optimized out>) at /src/NetBSD/cur/src/sys/kern/sys_generic.c:671
#19 0xffffffff80251a8e in sy_call (rval=0xffffc40495822fb0, uap=0xffffc40495823000, l=0xffff861b6cd5d980, sy=0xffffffff81858230 <sysent+1296>)
    at /src/NetBSD/cur/src/sys/sys/syscallvar.h:65
#20 sy_invoke (code=54, rval=0xffffc40495822fb0, uap=0xffffc40495823000, l=0xffff861b6cd5d980, sy=0xffffffff81858230 <sysent+1296>)
    at /src/NetBSD/cur/src/sys/sys/syscallvar.h:94
#21 syscall (frame=0xffffc40495823000) at /src/NetBSD/cur/src/sys/arch/x86/x86/syscall.c:138
#22 0xffffffff802096dd in handle_syscall ()
(gdb) print panicstr
$1 = 0xffffffff819a9520 <scratchstr> "LOCKDEBUG: Mutex error: assert_sleepable,70: spin lock held"

>How-To-Repeat:
	Use a -current LOCKDEBUG kernel.
	Probably use an NPF config with "ext_if=wm0" "$ext_ifaddrs = ifaddrs($ext_if)"
	start NPF
>Fix:
	check locking with respect to allocation.

>Release-Note:

>Audit-Trail:
From: "Christos Zoulas" <christos@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/54314 CVS commit: src/sys/net/npf
Date: Thu, 20 Jun 2019 13:08:53 -0400

 Module Name:	src
 Committed By:	christos
 Date:		Thu Jun 20 17:08:52 UTC 2019

 Modified Files:
 	src/sys/net/npf: npf_tableset.c

 Log Message:
 PR/54314: Frank Kardel: LOCKDEBUG: Mutex error: assert_sleepable,70:
 spin lock held when loading NPF


 To generate a diff of this commit:
 cvs rdiff -u -r1.30 -r1.31 src/sys/net/npf/npf_tableset.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: open->closed
State-Changed-By: kardel@NetBSD.org
State-Changed-When: Thu, 20 Jun 2019 20:48:06 +0000
State-Changed-Why:
fixed by christos commit


From: Frank Kardel <kardel@netbsd.org>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: PR/54314 CVS commit: src/sys/net/npf
Date: Thu, 20 Jun 2019 22:45:53 +0200

 Thanks - debug LOCKDEBUG kernel now comes up with NPF.

 Frank



>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.43 2018/01/16 07:36:43 maya Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2017 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.