Commit 15869303 authored by Tejun Heo's avatar Tejun Heo
Browse files

[PATCH] libata: hold host_set lock while finishing internal qc



Hold host_set lock while finishing internal qc.

Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
parent 7401abf2
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1031,6 +1031,9 @@ unsigned ata_exec_internal(struct ata_port *ap, struct ata_device *dev,
		spin_unlock_irqrestore(&ap->host_set->lock, flags);
	}

	/* finish up */
	spin_lock_irqsave(&ap->host_set->lock, flags);

	*tf = qc->tf;
	err_mask = qc->err_mask;

@@ -1052,6 +1055,8 @@ unsigned ata_exec_internal(struct ata_port *ap, struct ata_device *dev,
		ata_port_probe(ap);
	}

	spin_unlock_irqrestore(&ap->host_set->lock, flags);

	return err_mask;
}