Blame SOURCES/0001-scsi-3ware-fix-return-0-on-the-error-path-of-probe.patch

Kmods SIG 19eeeb
From 4dc98c1995482262e70e83ef029135247fafe0f2 Mon Sep 17 00:00:00 2001
Kmods SIG 19eeeb
From: Anton Vasilyev <vasilyev@ispras.ru>
Kmods SIG 19eeeb
Date: Fri, 27 Jul 2018 16:51:57 +0300
Kmods SIG 19eeeb
Subject: [Backport 4dc98c199548] scsi: 3ware: fix return 0 on the error path
Kmods SIG 19eeeb
 of probe
Kmods SIG 19eeeb
Kmods SIG 19eeeb
tw_probe() returns 0 in case of fail of tw_initialize_device_extension(),
Kmods SIG 19eeeb
pci_resource_start() or tw_reset_sequence() and releases resources.
Kmods SIG 19eeeb
twl_probe() returns 0 in case of fail of twl_initialize_device_extension(),
Kmods SIG 19eeeb
pci_iomap() and twl_reset_sequence().  twa_probe() returns 0 in case of
Kmods SIG 19eeeb
fail of tw_initialize_device_extension(), ioremap() and
Kmods SIG 19eeeb
twa_reset_sequence().
Kmods SIG 19eeeb
Kmods SIG 19eeeb
The patch adds retval initialization for these cases.
Kmods SIG 19eeeb
Kmods SIG 19eeeb
Found by Linux Driver Verification project (linuxtesting.org).
Kmods SIG 19eeeb
Kmods SIG 19eeeb
Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
Kmods SIG 19eeeb
Acked-by: Adam Radford <aradford@gmail.com>
Kmods SIG 19eeeb
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Kmods SIG 19eeeb
---
Kmods SIG 19eeeb
 src/3w-sas.c | 3 +++
Kmods SIG 19eeeb
 1 file changed, 3 insertions(+)
Kmods SIG 19eeeb
Kmods SIG 19eeeb
diff --git a/src/3w-sas.c b/src/3w-sas.c
Kmods SIG 19eeeb
index cf9f2a09b47d9e327457248e986adacf8e530949..40c1e6e64f58a8422e5738a3c6a12799142a6ff0 100644
Kmods SIG 19eeeb
--- a/src/3w-sas.c
Kmods SIG 19eeeb
+++ b/src/3w-sas.c
Kmods SIG 19eeeb
@@ -1594,6 +1594,7 @@ static int twl_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
Kmods SIG 19eeeb
 
Kmods SIG 19eeeb
 	if (twl_initialize_device_extension(tw_dev)) {
Kmods SIG 19eeeb
 		TW_PRINTK(tw_dev->host, TW_DRIVER, 0x1a, "Failed to initialize device extension");
Kmods SIG 19eeeb
+		retval = -ENOMEM;
Kmods SIG 19eeeb
 		goto out_free_device_extension;
Kmods SIG 19eeeb
 	}
Kmods SIG 19eeeb
 
Kmods SIG 19eeeb
@@ -1608,6 +1609,7 @@ static int twl_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
Kmods SIG 19eeeb
 	tw_dev->base_addr = pci_iomap(pdev, 1, 0);
Kmods SIG 19eeeb
 	if (!tw_dev->base_addr) {
Kmods SIG 19eeeb
 		TW_PRINTK(tw_dev->host, TW_DRIVER, 0x1c, "Failed to ioremap");
Kmods SIG 19eeeb
+		retval = -ENOMEM;
Kmods SIG 19eeeb
 		goto out_release_mem_region;
Kmods SIG 19eeeb
 	}
Kmods SIG 19eeeb
 
Kmods SIG 19eeeb
@@ -1617,6 +1619,7 @@ static int twl_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id)
Kmods SIG 19eeeb
 	/* Initialize the card */
Kmods SIG 19eeeb
 	if (twl_reset_sequence(tw_dev, 0)) {
Kmods SIG 19eeeb
 		TW_PRINTK(tw_dev->host, TW_DRIVER, 0x1d, "Controller reset failed during probe");
Kmods SIG 19eeeb
+		retval = -ENOMEM;
Kmods SIG 19eeeb
 		goto out_iounmap;
Kmods SIG 19eeeb
 	}
Kmods SIG 19eeeb
 
Kmods SIG 19eeeb
-- 
Kmods SIG 19eeeb
2.31.1
Kmods SIG 19eeeb