diff options
-rw-r--r-- | drivers/ata/libata-core.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 2b57547bd740..c9e6bd4d0686 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -5309,12 +5309,15 @@ static void atapi_pio_bytes(struct ata_queued_cmd *qc) | |||
5309 | bytes = (bc_hi << 8) | bc_lo; | 5309 | bytes = (bc_hi << 8) | bc_lo; |
5310 | 5310 | ||
5311 | /* shall be cleared to zero, indicating xfer of data */ | 5311 | /* shall be cleared to zero, indicating xfer of data */ |
5312 | if (ireason & (1 << 0)) | 5312 | if (unlikely(ireason & (1 << 0))) |
5313 | goto err_out; | 5313 | goto err_out; |
5314 | 5314 | ||
5315 | /* make sure transfer direction matches expected */ | 5315 | /* make sure transfer direction matches expected */ |
5316 | i_write = ((ireason & (1 << 1)) == 0) ? 1 : 0; | 5316 | i_write = ((ireason & (1 << 1)) == 0) ? 1 : 0; |
5317 | if (do_write != i_write) | 5317 | if (unlikely(do_write != i_write)) |
5318 | goto err_out; | ||
5319 | |||
5320 | if (unlikely(!bytes)) | ||
5318 | goto err_out; | 5321 | goto err_out; |
5319 | 5322 | ||
5320 | VPRINTK("ata%u: xfering %d bytes\n", ap->print_id, bytes); | 5323 | VPRINTK("ata%u: xfering %d bytes\n", ap->print_id, bytes); |