Re: [PATCH v2 3/3] scsi: libsas: Handle errors in sas_ex_discover_expander()
From: John Garry
Date: Wed Aug 12 2026 - 09:36:16 EST
On 11/08/2026 17:22, Eshaan Deshmukh wrote:
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;
+ }
+ res = sas_port_add(phy->port);
+ if (res) {
We never pay attention to the specific value of res, so it's not required, i.e. we can have:
if (sas_port_add(phy->port)) {
You can also change the sas_discover_expander() call (not shown) for this.
+ sas_port_free(phy->port);
+ phy->port = NULL;
+ sas_put_device(child);
+ return NULL;
+ }
There is code later after the sas_discover_expander() call which does the same tidy-up and more, so maybe it's better to have tidy-up labels, like:
if (!phy->port)
goto out_put_device;
...
res = sas_port_add(phy->port);
if (res)
goto out_free_port;
You get the idea...
switch (phy->attached_dev_type) {
case SAS_EDGE_EXPANDER_DEVICE: