i386/88082: cts protection for ath0 causes panic
Jake A.
kerneljake at hotmail.com
Thu Oct 27 08:20:16 PDT 2005
>Number: 88082
>Category: i386
>Synopsis: cts protection for ath0 causes panic
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: freebsd-i386
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Oct 27 15:20:15 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator: Jake A.
>Release: 6.0-RC1
>Organization:
(none)
>Environment:
FreeBSD daemon 6.0-RC1 FreeBSD 6.0-RC1 #0: Thu Oct 13 00:46:47 CDT 2005
jake at daemon:usr/src/sys/i386/compile/DAEMON i386
>Description:
While streaming FLAC audio data over ath0, the kernel will panic if wireless protection mode is enabled (this is the default for my DWL-G520 Rev.B3 card).
A freebsd-current thread on this problem is available at http://lists.freebsd.org/pipermail/freebsd-current/2005-October/056884.html
With WITNESS and INVARIATNS enabled, I see the following in dmesg during bootup:
Oct 18 00:23:53 daemon kernel: malloc(M_WAITOK) of "32", forcing M_NOWAIT
with the following non-sleepable locks held:
Oct 18 00:23:53 daemon kernel: exclusive sleep mutex ath0 (network driver) r
= 0 (0xc15c8d30) locked @ dev/ath/if_ath.c:4642
Oct 18 00:23:53 daemon kernel: Memory modified after free 0xc174a000(2048)
val=1fa00000 @ 0xc174a000
Oct 18 00:23:53 daemon savecore: no dumps found
Oct 18 00:23:56 daemon kernel: ath0: link state changed to DOWN
Oct 18 00:24:06 daemon kernel: malloc(M_WAITOK) of "32", forcing M_NOWAIT
with the following non-sleepable locks held:
Oct 18 00:24:06 daemon kernel: exclusive sleep mutex ath0 (network driver) r
= 0 (0xc15c8d30) locked @ dev/ath/if_ath.c:4642
Oct 18 00:24:06 daemon kernel: ath0: link state changed to UP
Then, when the crash occurs later:
# kgdb -q kernel.debug /var/crash/vmcore.2
[GDB will not be able to debug user-mode threads: /usr/lib/libthread_db.so:
Undefined symbol "ps_pglobal_lookup"]
Unread portion of the kernel message buffer:
lock order reversal
1st 0xc15c9188 ath0 (xmit q) @ dev/ath/if_ath.c:3537
2nd 0xc093b9c4 user map (user map) @ vm/vm_map.c:2997
Fatal trap 12: page fault while in kernel mode
fault virtual address = 0x10
fault code = supervisor read, page not present
instruction pointer = 0x20:0xc07af690
stack pointer = 0x28:0xcaf47958
frame pointer = 0x28:0x0
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, def32 1, gran 1
processor eflags = interrupt enabled, resume, IOPL = 0
current process = 35 (swi1: net)
trap number = 12
panic: page fault
Uptime: 22m20s
Dumping 223 MB (2 chunks)
chunk 0: 1MB (159 pages) ... ok
chunk 1: 223MB (57084 pages) 208 192 176 160 144 128 112 96 80 64 48 32 16
#0 doadump () at pcpu.h:165
165 pcpu.h: No such file or directory.
in pcpu.h
(kdbd) bt full
#0 doadump () at pcpu.h:165
No locals.
#1 0xc0639540 in boot (howto=260) at ../../../kern/kern_shutdown.c:399
first_buf_printf = 1
#2 0xc06397be in panic (fmt=0xc085b257 "%s")
at ../../../kern/kern_shutdown.c:555
td = (struct thread *) 0xc147d900
bootopt = 260
newpanic = 0
ap = 0xcaf47894 "U·\211À"
buf = "page fault", '\0' <repeats 245 times>
#3 0xc080a374 in trap_fatal (frame=0xcaf47918, eva=16)
at ../../../i386/i386/trap.c:831
code = 40
type = 12
ss = 40
esp = 0
softseg = {ssd_base = 0, ssd_limit = 1048575, ssd_type = 27,
ssd_dpl = 0, ssd_p = 1, ssd_xx = 6, ssd_xx1 = 1, ssd_def32 = 1, ssd_gran =
1}
#4 0xc080a0df in trap_pfault (frame=0xcaf47918, usermode=0, eva=16)
at ../../../i386/i386/trap.c:742
va = 0
vm = (struct vmspace *) 0x0
map = 0xc093b980
rv = 1
ftype = 1 '\001'
td = (struct thread *) 0xc147d900
p = (struct proc *) 0xc14a9624
#5 0xc0809d71 in trap (frame=
{tf_fs = -889978872, tf_es = -1067122648, tf_ds = -1065091032, tf_edi
= 0, tf_esi = -812636432, tf_ebp = 0, tf_isp = -889947836, tf_ebx =
-812664240, tf_edx = 787639, tf_ecx = -1073479567, tf_eax = 1, tf_trapno =
12, tf_err = 0, tf_eip = -1065683312, tf_cs = 32, tf_eflags = 590338, tf_esp
= 16808316, tf_ss = 0})
at ../../../i386/i386/trap.c:432
td = (struct thread *) 0xc147d900
p = (struct proc *) 0xc14a9624
sticks = 3242711296
i = 0
ucode = 0
type = 12
code = 0
eva = 16
#6 0xc07f9bda in calltrap () at ../../../i386/i386/exception.s:139
No locals.
#7 0xc07af690 in zz0e373a4d ()
No symbol table info available.
>How-To-Repeat:
Run 6.0-RC1 with a D-Link DWL-G520 against a D-Link DI-624 access point. The DWL-G520 will default to a wireless protection mode of CTS, and the DI-624 access point will default to a mode of "Auto". Stream FLAC audio data over the ath0 interface, and the kernel will panic after 20-180 minutes.
>Fix:
'ifconfig ath0 protmode off' will turn off protection mode and prevent the panic.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-i386
mailing list