Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd85f6e2 authored by Jeff Garzik's avatar Jeff Garzik
Browse files

[libata] sata_mv: fix irq port status usage



Interrupt handler did not properly initialize a variable on a per-port
basis, leading to incorrect behavior on ports other than port 0.

Bug caught and fixed by Mark Lord.

Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 29b2548b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1353,7 +1353,6 @@ static void mv_host_intr(struct ata_host_set *host_set, u32 relevant,
	u32 hc_irq_cause;
	int shift, port, port0, hard_port, handled;
	unsigned int err_mask;
	u8 ata_status = 0;

	if (hc == 0) {
		port0 = 0;
@@ -1371,6 +1370,7 @@ static void mv_host_intr(struct ata_host_set *host_set, u32 relevant,
		hc,relevant,hc_irq_cause);

	for (port = port0; port < port0 + MV_PORTS_PER_HC; port++) {
		u8 ata_status = 0;
		ap = host_set->ports[port];
		hard_port = port & MV_PORT_MASK;	/* range 0-3 */
		handled = 0;	/* ensure ata_status is set if handled++ */