svn commit: r277506 - head/sys/dev/firewire
Will Andrews
will at FreeBSD.org
Wed Jan 21 19:59:10 UTC 2015
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
More information about the svn-src-all
mailing list