[SCSI] Fix refcount leak in scsi_report_lun_scan

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
Alan Stern 2005-11-08 15:51:55 -05:00 committed by James Bottomley
parent 34ea80ec6a
commit 2ef8919830

View file

@ -1074,6 +1074,7 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
struct scsi_sense_hdr sshdr; struct scsi_sense_hdr sshdr;
struct scsi_device *sdev; struct scsi_device *sdev;
struct Scsi_Host *shost = dev_to_shost(&starget->dev); struct Scsi_Host *shost = dev_to_shost(&starget->dev);
int ret = 0;
/* /*
* Only support SCSI-3 and up devices if BLIST_NOREPORTLUN is not set. * Only support SCSI-3 and up devices if BLIST_NOREPORTLUN is not set.
@ -1169,8 +1170,8 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
/* /*
* The device probably does not support a REPORT LUN command * The device probably does not support a REPORT LUN command
*/ */
kfree(lun_data); ret = 1;
return 1; goto out_err;
} }
/* /*
@ -1238,6 +1239,7 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
} }
} }
out_err:
kfree(lun_data); kfree(lun_data);
out: out:
scsi_device_put(sdev); scsi_device_put(sdev);
@ -1246,7 +1248,7 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
* the sdev we used didn't appear in the report luns scan * the sdev we used didn't appear in the report luns scan
*/ */
scsi_destroy_sdev(sdev); scsi_destroy_sdev(sdev);
return 0; return ret;
} }
struct scsi_device *__scsi_add_device(struct Scsi_Host *shost, uint channel, struct scsi_device *__scsi_add_device(struct Scsi_Host *shost, uint channel,