Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 2 Dec 2012 16:25:25 +0200
From:      Mikolaj Golub <trociny@FreeBSD.org>
To:        freebsd-net@freebsd.org
Subject:   lagg with wireless iface: iieee80211_waitfor_parent is called with a non-sleepable lock held
Message-ID:  <20121202142524.GA8207@gmail.com>

next in thread | raw e-mail | index | archive | help
Hi,

On my laptop I have lagg setup in failover mode between wired and
wireless interfaces, as it is decribed in handbook:

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-aggregation.html#networking-lagg-wired-and-wireless

On start I have been observing witness warnings like below:

taskqueue_drain with the following non-sleepable locks held:
exclusive rw if_lagg rwlock (if_lagg rwlock) r = 0 (0xfffffe000aa9d408) locked @ /home/golub/freebsd/base/head/sys/modules/if_lagg/../../net/if_lagg.c:1065
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b
kdb_backtrace() at kdb_backtrace+0x39
witness_warn() at witness_warn+0x4b2
taskqueue_drain() at taskqueue_drain+0x3a
ieee80211_waitfor_parent() at ieee80211_waitfor_parent+0x28
ieee80211_ioctl() at ieee80211_ioctl+0x3e9
if_setflag() at if_setflag+0xc0
ifpromisc() at ifpromisc+0x2c
lagg_ioctl() at lagg_ioctl+0x7d5
if_setflag() at if_setflag+0xc0
ifpromisc() at ifpromisc+0x2c
bridge_ioctl_add() at bridge_ioctl_add+0x454
bridge_ioctl() at bridge_ioctl+0x268
in_control() at in_control+0x219
ifioctl() at ifioctl+0x1896
kern_ioctl() at kern_ioctl+0x1b0
sys_ioctl() at sys_ioctl+0x11f
amd64_syscall() at amd64_syscall+0x282
Xfast_syscall() at Xfast_syscall+0xfb
--- syscall (54, FreeBSD ELF64, sys_ioctl), rip = 0x8011815ca, rsp = 0x7fffffffd3f8, rbp = 0x7fffffffd4a0 ---

and eventually the panic "Sleeping thread owns a non-sleepable lock"
in lagg_input, when a packet arrives simultaneously with ifconfig run.

The lagg gets if_lagg rwlock before going to setflag, which ends up
calling ieee80211_ioctl and ieee80211_waitfor_parent (wait for all
deferred parent interface tasks to complete).

Does anybody see a way how it could be solved?

-- 
Mikolaj Golub



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20121202142524.GA8207>