diff mbox series

scsi: Fix a double free in myrs_cleanup

Message ID 20210311063005.9963-1-lyl2019@mail.ustc.edu.cn (mailing list archive)
State Accepted
Headers show
Series scsi: Fix a double free in myrs_cleanup | expand

Commit Message

Lv Yunlong March 11, 2021, 6:30 a.m. UTC
In myrs_cleanup, cs->mmio_base will be freed twice by
iounmap().

Fixes: 77266186397c6 ("scsi: myrs: Add Mylex RAID controller (SCSI interface)")
Signed-off-by: Lv Yunlong <lyl2019@mail.ustc.edu.cn>
---
 drivers/scsi/myrs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Hannes Reinecke March 11, 2021, 10:43 a.m. UTC | #1
On 3/11/21 7:30 AM, Lv Yunlong wrote:
> In myrs_cleanup, cs->mmio_base will be freed twice by
> iounmap().
> 
> Fixes: 77266186397c6 ("scsi: myrs: Add Mylex RAID controller (SCSI interface)")
> Signed-off-by: Lv Yunlong <lyl2019@mail.ustc.edu.cn>
> ---
>  drivers/scsi/myrs.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/scsi/myrs.c b/drivers/scsi/myrs.c
> index 4adf9ded296a..329fd025c718 100644
> --- a/drivers/scsi/myrs.c
> +++ b/drivers/scsi/myrs.c
> @@ -2273,12 +2273,12 @@ static void myrs_cleanup(struct myrs_hba *cs)
>  	if (cs->mmio_base) {
>  		cs->disable_intr(cs);
>  		iounmap(cs->mmio_base);
> +		cs->mmio_base = NULL;
>  	}
>  	if (cs->irq)
>  		free_irq(cs->irq, cs);
>  	if (cs->io_addr)
>  		release_region(cs->io_addr, 0x80);
> -	iounmap(cs->mmio_base);
>  	pci_set_drvdata(pdev, NULL);
>  	pci_disable_device(pdev);
>  	scsi_host_put(cs->host);
> 
Reviewed-by: Hannes Reinecke <hare@suse.de>

Cheers,

Hannes
Martin K. Petersen March 16, 2021, 3:13 a.m. UTC | #2
On Wed, 10 Mar 2021 22:30:05 -0800, Lv Yunlong wrote:

> In myrs_cleanup, cs->mmio_base will be freed twice by
> iounmap().

Applied to 5.12/scsi-fixes, thanks!

[1/1] scsi: Fix a double free in myrs_cleanup
      https://git.kernel.org/mkp/scsi/c/2bb817712e2f
diff mbox series

Patch

diff --git a/drivers/scsi/myrs.c b/drivers/scsi/myrs.c
index 4adf9ded296a..329fd025c718 100644
--- a/drivers/scsi/myrs.c
+++ b/drivers/scsi/myrs.c
@@ -2273,12 +2273,12 @@  static void myrs_cleanup(struct myrs_hba *cs)
 	if (cs->mmio_base) {
 		cs->disable_intr(cs);
 		iounmap(cs->mmio_base);
+		cs->mmio_base = NULL;
 	}
 	if (cs->irq)
 		free_irq(cs->irq, cs);
 	if (cs->io_addr)
 		release_region(cs->io_addr, 0x80);
-	iounmap(cs->mmio_base);
 	pci_set_drvdata(pdev, NULL);
 	pci_disable_device(pdev);
 	scsi_host_put(cs->host);