scsi: target: fix crash with iscsi target and dvd
[ Upstream commit8e1ceafe50
] When the current page can't be added to bio, one new bio should be created for adding this page again, instead of ignoring this page. This patch fixes kernel crash with iscsi target and dvd, as reported by Wakko. Cc: Wakko Warner <wakko@animx.eu.org> Cc: Bart Van Assche <Bart.VanAssche@wdc.com> Cc: target-devel@vger.kernel.org Cc: linux-scsi@vger.kernel.org Cc: "Nicholas A. Bellinger" <nab@linux-iscsi.org> Cc: Christoph Hellwig <hch@lst.de> Fixes:84c8590646
("target: avoid accessing .bi_vcnt directly") Signed-off-by: Ming Lei <ming.lei@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
4fb7926bba
Коммит
348288a269
|
@ -890,6 +890,7 @@ pscsi_map_sg(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents,
|
|||
bytes = min(bytes, data_len);
|
||||
|
||||
if (!bio) {
|
||||
new_bio:
|
||||
nr_vecs = min_t(int, BIO_MAX_PAGES, nr_pages);
|
||||
nr_pages -= nr_vecs;
|
||||
/*
|
||||
|
@ -931,6 +932,7 @@ pscsi_map_sg(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents,
|
|||
* be allocated with pscsi_get_bio() above.
|
||||
*/
|
||||
bio = NULL;
|
||||
goto new_bio;
|
||||
}
|
||||
|
||||
data_len -= bytes;
|
||||
|
|
Загрузка…
Ссылка в новой задаче