]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
scsi: sim710: Fix resource leak by adding missing ioport_unmap() calls
authorHaotian Zhang <vulab@iscas.ac.cn>
Wed, 29 Oct 2025 03:25:55 +0000 (11:25 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 13 Nov 2025 01:53:41 +0000 (20:53 -0500)
The driver calls ioport_map() to map I/O ports in sim710_probe_common()
but never calls ioport_unmap() to release the mapping. This causes
resource leaks in both the error path when request_irq() fails and in
the normal device removal path via sim710_device_remove().

Add ioport_unmap() calls in the out_release error path and in
sim710_device_remove().

Fixes: 56fece20086e ("[PATCH] finally fix 53c700 to use the generic iomem infrastructure")
Signed-off-by: Haotian Zhang <vulab@iscas.ac.cn>
Link: https://patch.msgid.link/20251029032555.1476-1-vulab@iscas.ac.cn
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/sim710.c

index e519df68d603d597d82587d3e10bcd2df8e72179..70c75ab1453a16069e2dd9f816c50915be49043a 100644 (file)
@@ -133,6 +133,7 @@ static int sim710_probe_common(struct device *dev, unsigned long base_addr,
  out_put_host:
        scsi_host_put(host);
  out_release:
+       ioport_unmap(hostdata->base);
        release_region(base_addr, 64);
  out_free:
        kfree(hostdata);
@@ -148,6 +149,7 @@ static int sim710_device_remove(struct device *dev)
 
        scsi_remove_host(host);
        NCR_700_release(host);
+       ioport_unmap(hostdata->base);
        kfree(hostdata);
        free_irq(host->irq, host);
        release_region(host->base, 64);