DragonFlyBSD Kernel Audit
DF-1212 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/disk/ahci/ahci.c b/sys/dev/disk/ahci/ahci.c
--- a/sys/dev/disk/ahci/ahci.c
+++ b/sys/dev/disk/ahci/ahci.c
@@ -3964,7 +3964,8 @@
 		if (ap->ap_sactive & ci_saved)
 			ahci_pwrite(ap, AHCI_PREG_SACT, ci_saved);
 		ahci_pwrite(ap, AHCI_PREG_CI, ci_saved);
-	} else if (ci_saved) {
+	} else if (ci_saved != 0) {
+		ci_saved &= (1U << ap->ap_sc->sc_ncmds) - 1;
 		struct ata_port *ccb_at;
 		int i;
 		int fis_target;