Messages in this thread | | | Date | Mon, 10 Jan 2022 20:13:33 +0800 | Subject | Re: [PATCH] scsi: storvsc: Fix storvsc_queuecommand() memory leak | From | Tianyu Lan <> |
| |
On 1/9/2022 8:17 AM, Juan Vazquez wrote: > Fix possible memory leak in error path of storvsc_queuecommand() when > DMA mapping fails. > > Fixes: 743b237c3a7b ("scsi: storvsc: Add Isolation VM support for storvsc driver") > Signed-off-by: Juan Vazquez <juvazq@linux.microsoft.com>
Looks good. Thanks for the fix patch.
Reviewed-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
> --- > drivers/scsi/storvsc_drv.c | 17 ++++++++++++----- > 1 file changed, 12 insertions(+), 5 deletions(-) > > diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c > index 2273b843d9d2..9a0bba5a51a7 100644 > --- a/drivers/scsi/storvsc_drv.c > +++ b/drivers/scsi/storvsc_drv.c > @@ -1850,8 +1850,10 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd) > payload->range.offset = offset_in_hvpg; > > sg_count = scsi_dma_map(scmnd); > - if (sg_count < 0) > - return SCSI_MLQUEUE_DEVICE_BUSY; > + if (sg_count < 0) { > + ret = SCSI_MLQUEUE_DEVICE_BUSY; > + goto err_free_payload; > + } > > for_each_sg(sgl, sg, sg_count, j) { > /* > @@ -1886,13 +1888,18 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd) > put_cpu(); > > if (ret == -EAGAIN) { > - if (payload_sz > sizeof(cmd_request->mpb)) > - kfree(payload); > /* no more space */ > - return SCSI_MLQUEUE_DEVICE_BUSY; > + ret = SCSI_MLQUEUE_DEVICE_BUSY; > + goto err_free_payload; > } > > return 0; > + > +err_free_payload: > + if (payload_sz > sizeof(cmd_request->mpb)) > + kfree(payload); > + > + return ret; > } > > static struct scsi_host_template scsi_driver = {
| |