| From foo@baz Sun Jun 17 12:07:33 CEST 2018 |
| From: Ming Lei <ming.lei@redhat.com> |
| Date: Mon, 16 Apr 2018 17:48:41 +0800 |
| Subject: scsi: target: fix crash with iscsi target and dvd |
| |
| From: Ming Lei <ming.lei@redhat.com> |
| |
| [ Upstream commit 8e1ceafe50ec4d1bcfae154dd70e7cb6946a6177 ] |
| |
| 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: 84c8590646d5b35804 ("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> |
| --- |
| drivers/target/target_core_pscsi.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/drivers/target/target_core_pscsi.c |
| +++ b/drivers/target/target_core_pscsi.c |
| @@ -890,6 +890,7 @@ pscsi_map_sg(struct se_cmd *cmd, struct |
| 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 |
| * be allocated with pscsi_get_bio() above. |
| */ |
| bio = NULL; |
| + goto new_bio; |
| } |
| |
| data_len -= bytes; |