Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix a memory leak with scsi-mq triggered by commands with large data transfer length. __sg_alloc_table() sets both table->nents and table->orig_nents to the same value. When the scatterlist is DMA-mapped, table->nents is overwritten with the (possibly smaller) size of the DMA-mapped scatterlist, while table->orig_nents retains the original size of the allocated scatterlist. scsi_free_sgtable() should therefore check orig_nents instead of nents, and all code that initializes sdb->table without calling __sg_alloc_table() should set both nents and orig_nents. Fixes: d285203 ("scsi: add support for a blk-mq based I/O path.") Cc: <[email protected]> # 3.17+ Signed-off-by: Tony Battersby <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Reviewed-by: Ewan D. Milne <[email protected]> Signed-off-by: James Bottomley <[email protected]>
- Loading branch information