Author: will
Date: Wed Jan 21 19:59:09 2015
New Revision: 277506
URL: https://svnweb.freebsd.org/changeset/base/277506

Log:
  Fix one cause of firewire panics.
  
  sys/dev/firewire/firewire.c:
        In fw_xfer_unload(), clear the FWXF_INQ flag on the
        xfer under protection of the FW_GMTX, after the
        xfer is removeed from the tx/rx queue.  Otherwise
        it is possible for the xfer to be removed again
        (corrupting the list or immediately panicing) from
        another thread that has found this xfer in the
        transaction label table.
  
  Submitted by: gibbs
  MFC after:    1 week
  Sponsored by: Spectra Logic
  MFSpectraBSD: 1110200 on 2015/01/02

Modified:
  head/sys/dev/firewire/firewire.c

Modified: head/sys/dev/firewire/firewire.c
==============================================================================
--- head/sys/dev/firewire/firewire.c    Wed Jan 21 19:53:52 2015        
(r277505)
+++ head/sys/dev/firewire/firewire.c    Wed Jan 21 19:59:09 2015        
(r277506)
@@ -1166,6 +1166,7 @@ fw_xfer_unload(struct fw_xfer *xfer)
                s = splfw();
                FW_GLOCK(xfer->fc);
                STAILQ_REMOVE(&xfer->q->q, xfer, fw_xfer, link);
+               xfer->flag &= ~FWXF_INQ;
 #if 0
                xfer->q->queued--;
 #endif
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to