Re: [PATCH] scsi: libsas: fix error handing in sas_ex_discover_expander()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2022/11/7 17:39, John Garry wrote:
On 04/11/2022 09:27, Yang Yingliang wrote:
Check return value of sas_port_alloc() and sas_port_add() and handle
the error. If they fail, free the device and port, then returns NULL
instead of using BUG_ON().

Fixes: 2908d778ab3e ("[SCSI] aic94xx: new driver")
Signed-off-by: Yang Yingliang <yangyingliang@xxxxxxxxxx>

I already sent a patch to handle all errors here:

https://lore.kernel.org/linux-scsi/1666693096-180008-7-git-send-email-john.garry@xxxxxxxxxx/
Your patch is better to handle all of these, this patch can be dropped.

Thanks,
Yang

Do you actually have a cascaded expander setup to test this?

---
  drivers/scsi/libsas/sas_expander.c | 13 +++++++++++--
  1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
index 5ce251830104..88b8b955d533 100644
--- a/drivers/scsi/libsas/sas_expander.c
+++ b/drivers/scsi/libsas/sas_expander.c
@@ -935,8 +935,17 @@ static struct domain_device *sas_ex_discover_expander(
          return NULL;
        phy->port = sas_port_alloc(&parent->rphy->dev, phy_id);
-    /* FIXME: better error handling */
-    BUG_ON(sas_port_add(phy->port) != 0);
+    if (!phy->port) {
+        sas_put_device(child);
+        return NULL;
+    }
+
+    if (sas_port_add(phy->port)) {
+        sas_port_free(phy->port);
+        phy->port = NULL;
+        sas_put_device(child);
+        return NULL; > +    }
          switch (phy->attached_dev_type) {

.



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux