ata: fixup ATA_PROT_NODATA
The taskfile protocol is a numeric value, and can not be ORed. Currently this is harmless as the protocol is always zeroed before, but if it ever has a non-zero value the ORing would create incorrect results. Signed-off-by: Hannes Reinecke <hare@suse.de> [hch: updated patch description] Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
b38d4d85b8
commit
bd18bc04ca
|
@ -1238,7 +1238,7 @@ static int ata_read_native_max_address(struct ata_device *dev, u64 *max_sectors)
|
|||
} else
|
||||
tf.command = ATA_CMD_READ_NATIVE_MAX;
|
||||
|
||||
tf.protocol |= ATA_PROT_NODATA;
|
||||
tf.protocol = ATA_PROT_NODATA;
|
||||
tf.device |= ATA_LBA;
|
||||
|
||||
err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0, 0);
|
||||
|
@ -1297,7 +1297,7 @@ static int ata_set_max_sectors(struct ata_device *dev, u64 new_sectors)
|
|||
tf.device |= (new_sectors >> 24) & 0xf;
|
||||
}
|
||||
|
||||
tf.protocol |= ATA_PROT_NODATA;
|
||||
tf.protocol = ATA_PROT_NODATA;
|
||||
tf.device |= ATA_LBA;
|
||||
|
||||
tf.lbal = (new_sectors >> 0) & 0xff;
|
||||
|
|
|
@ -3177,7 +3177,7 @@ static void ata_eh_park_issue_cmd(struct ata_device *dev, int park)
|
|||
}
|
||||
|
||||
tf.flags |= ATA_TFLAG_DEVICE | ATA_TFLAG_ISADDR;
|
||||
tf.protocol |= ATA_PROT_NODATA;
|
||||
tf.protocol = ATA_PROT_NODATA;
|
||||
err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0, 0);
|
||||
if (park && (err_mask || tf.lbal != 0xc4)) {
|
||||
ata_dev_err(dev, "head unload failed!\n");
|
||||
|
|
Loading…
Reference in New Issue