⬢ DragonFlyBSD Kernel Audit
DF-4717 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/raid/aac/aac_cam.c
+++ b/sys/dev/raid/aac/aac_cam.c
@@ -411,6 +411,10 @@
 	srb = (struct aac_srb *)&fib->data[0];
 	cm->cm_datalen = 0;
 
+	/* Set command (needed by XPT_SCSI_IO and XPT_RESET_DEV alike) */
+	fib->Header.Command = (sc->flags & AAC_FLAGS_SG_64BIT) ?
+	    ScsiPortCommandU64 : ScsiPortCommand;
+
 	switch (ccb->ccb_h.flags & CAM_DIR_MASK) {
 	case CAM_DIR_IN:
 		srb->flags = AAC_SRB_FLAGS_DATA_IN;
@@ -447,10 +451,6 @@
 		else
 			bcopy(csio->cdb_io.cdb_bytes, (u_int8_t *)&srb->cdb[0],
 			    srb->cdb_len);
-
-		/* Set command */
-		fib->Header.Command = (sc->flags & AAC_FLAGS_SG_64BIT) ?
-			ScsiPortCommandU64 : ScsiPortCommand;
 
 		/* Map the s/g list. XXX 32bit addresses only! */
 		if ((ccb->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_NONE) {