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: