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:
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to