mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
mtip32xxx: use for_each_sg
Use the proper helper instead of manually iterating the scatterlist, which is broken in the presence of chained S/G lists. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
d85cb20453
commit
27d420bc47
@ -1549,11 +1549,11 @@ static inline void fill_command_sg(struct driver_data *dd,
|
|||||||
int n;
|
int n;
|
||||||
unsigned int dma_len;
|
unsigned int dma_len;
|
||||||
struct mtip_cmd_sg *command_sg;
|
struct mtip_cmd_sg *command_sg;
|
||||||
struct scatterlist *sg = command->sg;
|
struct scatterlist *sg;
|
||||||
|
|
||||||
command_sg = command->command + AHCI_CMD_TBL_HDR_SZ;
|
command_sg = command->command + AHCI_CMD_TBL_HDR_SZ;
|
||||||
|
|
||||||
for (n = 0; n < nents; n++) {
|
for_each_sg(command->sg, sg, nents, n) {
|
||||||
dma_len = sg_dma_len(sg);
|
dma_len = sg_dma_len(sg);
|
||||||
if (dma_len > 0x400000)
|
if (dma_len > 0x400000)
|
||||||
dev_err(&dd->pdev->dev,
|
dev_err(&dd->pdev->dev,
|
||||||
@ -1563,7 +1563,6 @@ static inline void fill_command_sg(struct driver_data *dd,
|
|||||||
command_sg->dba_upper =
|
command_sg->dba_upper =
|
||||||
cpu_to_le32((sg_dma_address(sg) >> 16) >> 16);
|
cpu_to_le32((sg_dma_address(sg) >> 16) >> 16);
|
||||||
command_sg++;
|
command_sg++;
|
||||||
sg++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user