Page Fault - Wireless problem?

Mark Tinguely tinguely at casselton.net
Thu Feb 23 06:36:48 PST 2006


>  Unread portion of the kernel message buffer:
>  ural0: could not transmit buffer: SHORT_XFER
>
>
>  Fatal trap 12: page fault while in kernel mode
>  fault virtual address   = 0x4
>  fault code              = supervisor read, page not present
>  instruction pointer     = 0x20:0xc0667091
>  stack pointer           = 0x28:0xd33e4c00
>  frame pointer           = 0x28:0xd33e4c0c
>  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         = 32 (irq21: uhci0 uhci1+)
>  trap number             = 12
>  panic: page fault

I am not a USB/Ralink expert, but it the node can be removed
mid-transmission elsewhere (ural_free_tx_list) on input errors.
I don't know about threading issues that would require extra locking
as well:

in sys/dev/usb/
--- if_ural.c.orig	Sun Jan 29 08:16:36 2006
+++ if_ural.c	Thu Feb 23 08:30:36 2006
@@ -881,8 +881,10 @@
 
 	m_freem(data->m);
 	data->m = NULL;
-	ieee80211_free_node(data->ni);
-	data->ni = NULL;
+	if (data->ni != NULL) {
+		ieee80211_free_node(data->ni);
+		data->ni = NULL;
+	}
 
 	sc->tx_queued--;
 	ifp->if_opackets++;


More information about the freebsd-questions mailing list