mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
staging: hv: Fixed lockup problem with bounce_buffer scatter list
commit 77c5ceaff3 upstream.
Fixed lockup problem with bounce_buffer scatter list which caused
crashes in heavy loads. And minor code indentation cleanup in effected
area.
Removed whitespace and noted minor indentation changes in description as
pointed out by Joe Perches. (Thanks for reviewing Joe)
Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
69e313042c
commit
f60f79f09b
@@ -652,6 +652,7 @@ static int storvsc_queuecommand(struct scsi_cmnd *scmnd,
|
||||
unsigned int request_size = 0;
|
||||
int i;
|
||||
struct scatterlist *sgl;
|
||||
unsigned int sg_count = 0;
|
||||
|
||||
DPRINT_ENTER(STORVSC_DRV);
|
||||
|
||||
@@ -736,6 +737,7 @@ static int storvsc_queuecommand(struct scsi_cmnd *scmnd,
|
||||
request->DataBuffer.Length = scsi_bufflen(scmnd);
|
||||
if (scsi_sg_count(scmnd)) {
|
||||
sgl = (struct scatterlist *)scsi_sglist(scmnd);
|
||||
sg_count = scsi_sg_count(scmnd);
|
||||
|
||||
/* check if we need to bounce the sgl */
|
||||
if (do_bounce_buffer(sgl, scsi_sg_count(scmnd)) != -1) {
|
||||
@@ -770,11 +772,12 @@ static int storvsc_queuecommand(struct scsi_cmnd *scmnd,
|
||||
scsi_sg_count(scmnd));
|
||||
|
||||
sgl = cmd_request->bounce_sgl;
|
||||
sg_count = cmd_request->bounce_sgl_count;
|
||||
}
|
||||
|
||||
request->DataBuffer.Offset = sgl[0].offset;
|
||||
|
||||
for (i = 0; i < scsi_sg_count(scmnd); i++) {
|
||||
for (i = 0; i < sg_count; i++) {
|
||||
DPRINT_DBG(STORVSC_DRV, "sgl[%d] len %d offset %d \n",
|
||||
i, sgl[i].length, sgl[i].offset);
|
||||
request->DataBuffer.PfnArray[i] =
|
||||
|
||||
Reference in New Issue
Block a user