Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Feb 2006 08:36:42 -0600 (CST)
From:      Mark Tinguely <tinguely@casselton.net>
To:        davel@compbook.co.uk, freebsd-questions@freebsd.org
Subject:   Re: Page Fault - Wireless problem?
Message-ID:  <200602231436.k1NEaguY044572@casselton.net>
In-Reply-To: <43FD067B.4040604@compbook.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help

>  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++;



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