svn commit: r189452 - head/sys/dev/usb/wlan
Andrew Thompson
thompsa at FreeBSD.org
Fri Mar 6 09:04:48 PST 2009
Author: thompsa
Date: Fri Mar 6 17:04:47 2009
New Revision: 189452
URL: http://svn.freebsd.org/changeset/base/189452
Log:
Ensure the cached rq pointer is still valid before waking up the address, the
zyd_cmd function may have timed out. It wouldnt cause a panic but could wakeup
someone.
Spotted by: HPS
Modified:
head/sys/dev/usb/wlan/if_zyd.c
Modified: head/sys/dev/usb/wlan/if_zyd.c
==============================================================================
--- head/sys/dev/usb/wlan/if_zyd.c Fri Mar 6 16:47:50 2009 (r189451)
+++ head/sys/dev/usb/wlan/if_zyd.c Fri Mar 6 17:04:47 2009 (r189452)
@@ -796,10 +796,14 @@ zyd_intr_write_callback(struct usb2_xfer
switch (USB_GET_STATE(xfer)) {
case USB_ST_TRANSFERRED:
- rqp = xfer->priv_fifo;
- DPRINTF(sc, ZYD_DEBUG_CMD, "command %p transferred\n", rqp);
- if ((rqp->flags & ZYD_CMD_FLAG_READ) == 0)
- wakeup(rqp); /* wakeup caller */
+ DPRINTF(sc, ZYD_DEBUG_CMD, "command %p transferred\n",
+ xfer->priv_fifo);
+ STAILQ_FOREACH(rqp, &sc->sc_rqh, rq) {
+ /* Ensure the cached rq pointer is still valid */
+ if (rqp == xfer->priv_fifo &&
+ (rqp->flags & ZYD_CMD_FLAG_READ) == 0)
+ wakeup(rqp); /* wakeup caller */
+ }
/* FALLTHROUGH */
case USB_ST_SETUP:
More information about the svn-src-all
mailing list