scsi: pm8001: fix double free in pm8001_pci_probe
authorPan Bian <bianpan2016@163.com>
Tue, 8 Aug 2017 11:40:30 +0000 (19:40 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 10 Aug 2017 23:55:35 +0000 (19:55 -0400)
commitbc1371c181b503fe925ae292cd96618f305790cd
tree5992e86ed76195b4ff9e05afa92e9960c5a1f4fa
parent3b8328e2e0fda49202b502154608dd6fb8e8ed37
scsi: pm8001: fix double free in pm8001_pci_probe

In function pm8001_pci_probe(), on errors that the control flow jumps to
label err_out_ha_free, function pm8001_free() is called. In pm8001_free(),
scsi_host_put() is called to release shost, which keeps the return value
of scsi_host_alloc(). After pm8001_free() returns, kfree() is called to
free shost again, resulting in a double free bug. This patch removes
scsi_host_put() from pm8001_free() and explicitly calls scsi_host_put()
to release Scsi_Host in need.

Signed-off-by: Pan Bian <bianpan2016@163.com>
Reviewed-by: Jack Wang <jinpu.wang@profitbricks.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/pm8001/pm8001_init.c