From nobody Tue Sep 29 06:08:57 2026 Received: from outbound.st.icloud.com (st-2001f-snip4-11.eps.apple.com [57.103.76.103]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C359B44C66C for ; Tue, 11 Aug 2026 16:22:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=57.103.76.103 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786465376; cv=none; b=vGoC4KnLbf0LO676sx1jxJipOufGECYLy1vBTXzc2hKpu0Zqe6Nth5fT3y0raSvi8vSEK7QuuEdA65Zy2b9/1E6ouYJ2j13V8tUWuwLZ8aBdwM4t2uzQNQXkGokr5S4/5RviW5WTPCCUQzYH8z0qbmIa2D0nF8cxDgWMY+aePz0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786465376; c=relaxed/simple; bh=0fPc6CARPcuAaajWRtt23gGGfR1jiXTnCmvuXPbfhcM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dz2LiyfFg+iskCiK8alX4+fOEM6UmNfogvOAwhrD2Wuj+5+NyVzRLU70a+6J87eo/aVL3k1SnbHcCOAn1cBlKmM9Gsja3cwukFEP9jv+Ykl72qp3BACh3ixc1D8AzQsrkURY9fEueBOVMAcbd8HoLHECoa2CT1YvPeB54E7e/Uo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=icloud.com; spf=pass smtp.mailfrom=icloud.com; dkim=pass (2048-bit key) header.d=icloud.com header.i=@icloud.com header.b=0DTKdtAM; arc=none smtp.client-ip=57.103.76.103 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=icloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=icloud.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=icloud.com header.i=@icloud.com header.b="0DTKdtAM" Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-100-percent-10 (Postfix) with ESMTPS id E6C101801785; Tue, 11 Aug 2026 16:22:50 +0000 (UTC) X-ICL-RepId: 019ff1a2-432e-730e-a388-a7b91807ae58 X-ICL-Out-Info: HUtFAUMEWwJACUgBTUQeDx5WFlZNRAJCTQ1PHVwPUxxGClYCVAFLVxQEHUAFVgpcQglLAi1eCF4fTBwdDlgGEhZdRVoOWwRHFBcbXAAXGVFNDlhbCFsEDx9MDFECQgVWXkoMHQRUB10FXVZQAlpLQgRLRWhcBVwcQBdIHV9qS1YUBBFQAVgeVl5aF15NWgJWTQVKA18BWwpBCEkFXwVZAV4NSQJdAlkfQhQdQAVWClxCCUsCLV4IXh9MHB0OWAYMUE0BQwgKAlEcVg1X Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=icloud.com; s=1a1hai; t=1786465373; x=1789057373; bh=SKbj1OiC/mTsqe+ug23DPAsn1yxr1ddVH2kyAr8TTnY=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=0DTKdtAMXgxk4D/MXnE8RJ0/+h1Q5YIHjQgg/HiMTFB1d3aEBVFnhOkHDAWM1cw8tifbsFUtvm6jfsAHroyAfjl/UBGB7bv/1ydzNjsYPZtI7Na3FclQqOLAwp+sZdQxXQSG2BfWzccqbkiRT7z4kiU2wLyKvsJDmXG+o/GH1bLapCwrxpsBp1vlIDUGfl0n0aCCMdjzPULF1xu9xAMswEs1R++nlfBWEwBibSRyrH2nTvebK86XYDy/eX4ufWw53HDly5sQOebPUU9fjv/C3QfXY7OJ5xSsBmvygfNRtekPoHyyHLzo+RCIyCNN0CfY+3U/d3EmvwneGAhXONIIug== Received: from machine (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-100-percent-10 (Postfix) with ESMTPSA id 762AF1801784; Tue, 11 Aug 2026 16:22:50 +0000 (UTC) From: Eshaan Deshmukh To: "Martin K . Petersen" , "James E . J . Bottomley" Cc: John Garry , Jason Yan , linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, Eshaan Deshmukh Subject: [PATCH v2 1/3] scsi: libsas: Handle errors in sas_ex_add_parent_port() Date: Tue, 11 Aug 2026 11:22:21 -0500 Message-ID: <20260811162223.411052-2-eshaan2031@icloud.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260811162223.411052-1-eshaan2031@icloud.com> References: <20260811162223.411052-1-eshaan2031@icloud.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: EGe0L9IzSpxheSGvoowNgJeIKGi6R7SE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDEzNiBTYWx0ZWRfX1qHgB0wdOXto p22MGpcjUIQOLP9g1TFraCv09t/MoVKilGoG05NB3/L2FPAev6FmUoXDvf8YBEQfIk3WUIwW4n4 qzYQJXtLWELjKE+R+cllVsQ6UuZotWkDjAev+JO0BiIKRlvk2ETrU5uIl/hBut6c/I2djTA/bGU lmw3D83l9RISML9ot1Az2k+AaaxRwGmEKw//to+6IXzx605CNTJwObMScPyL8UoqxzdrWUyS5om nrOVzWAI+eL9ZnHb1buMAi7efLNMip9VTyOhyZhyNaXEHe7zd6IEDt3H4HEPdfH5QS6IQXpipIP +XiIXIkFxnyrpx3ZwpAl8fvrR6MmHIEztgktzOTkFEKXV2/VjWzSojdL77jH0g= X-Authority-Info-Out: v=2.4 cv=e5sLiKp/ c=1 sm=1 tr=0 ts=6a7b4c5b cx=c_apl:c_pps:t_out a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=Sv0fKeRqtYgA:10 a=x7bEGLp0ZPQA:10 a=ea8ixM18I5MA:10 a=VkNPw1HP01LnGYTKEx00:22 a=v3ZZPjhaAAAA:8 a=i0Imq2-WVZI-w4_-C1cA:9 X-Proofpoint-ORIG-GUID: EGe0L9IzSpxheSGvoowNgJeIKGi6R7SE Content-Type: text/plain; charset="utf-8" The function sas_ex_add_parent_port() uses BUG_ON() if sas_port_alloc() or sas_port_add() fails. Change sas_ex_add_parent_port() to return error codes to the caller and free the sas_port_alloc() allocation. Also change sas_ex_discover_dev() to handle errors returned by sas_ex_add_parent_port(). Signed-off-by: Eshaan Deshmukh --- drivers/scsi/libsas/sas_expander.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_e= xpander.c index f471ab464..f1a1417b0 100644 --- a/drivers/scsi/libsas/sas_expander.c +++ b/drivers/scsi/libsas/sas_expander.c @@ -33,19 +33,29 @@ static void sas_port_add_ex_phy(struct sas_port *port, = struct ex_phy *ex_phy) ex_phy->phy_state =3D PHY_DEVICE_DISCOVERED; } =20 -static void sas_ex_add_parent_port(struct domain_device *dev, int phy_id) +static int sas_ex_add_parent_port(struct domain_device *dev, int phy_id) { struct expander_device *ex =3D &dev->ex_dev; struct ex_phy *ex_phy =3D &ex->ex_phy[phy_id]; + int error; =20 if (!ex->parent_port) { ex->parent_port =3D sas_port_alloc(&dev->rphy->dev, phy_id); - /* FIXME: error handling */ - BUG_ON(!ex->parent_port); - BUG_ON(sas_port_add(ex->parent_port)); + if (!ex->parent_port) + return -ENOMEM; + + error =3D sas_port_add(ex->parent_port); + if (error) { + sas_port_free(ex->parent_port); + ex->parent_port =3D NULL; + return error; + } + sas_port_mark_backlink(ex->parent_port); } sas_port_add_ex_phy(ex->parent_port, ex_phy); + + return 0; } =20 /* ---------- SMP task management ---------- */ @@ -981,12 +991,14 @@ static int sas_ex_discover_dev(struct domain_device *= dev, int phy_id) } =20 /* Parent and domain coherency */ - if (!dev->parent && sas_phy_match_port_addr(dev->port, ex_phy)) { - sas_ex_add_parent_port(dev, phy_id); - return 0; - } + if (!dev->parent && sas_phy_match_port_addr(dev->port, ex_phy)) + return sas_ex_add_parent_port(dev, phy_id); + if (dev->parent && sas_phy_match_dev_addr(dev->parent, ex_phy)) { - sas_ex_add_parent_port(dev, phy_id); + res =3D sas_ex_add_parent_port(dev, phy_id); + if (res) + return res; + if (ex_phy->routing_attr =3D=3D TABLE_ROUTING) sas_configure_phy(dev, phy_id, dev->port->sas_addr, 1); return 0; --=20 2.55.0 From nobody Tue Sep 29 06:08:57 2026 Received: from outbound.st.icloud.com (st-2001d-snip4-7.eps.apple.com [57.103.76.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CF68F453A25 for ; Tue, 11 Aug 2026 16:23:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=57.103.76.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786465382; cv=none; b=TvTrOMYcbeQwGG00Mdzkcmb5i9nkA0GiltffiuFhrIIzHJ1jxMatEKl3F1bDTH3Ig1WQ4S8s1W0vppai90tHgcKGQi0us7u3cC52eDXGuWM6zEsIos2vC/jmnxJd4nzzAuvwO+8wN3etwDEs/nkUBdYDd8xEtibzzQ079sQpNLw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786465382; c=relaxed/simple; bh=cDvzLlzFZYdah33bWCiHUL1zftZsV10gayUQkkOysic=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ks3OL3YD/lIDeQ+whnOg20CZMxVs2WAIjoq6+/oD/AWwknSuGOwtN4va478plopfI+J0DGDPV0G2GHAgmkHY96a8OMvnPWGLuGsEYATC7o3mp1ztcODmfkDdynv8pbACt1qZOQw77dbto4G8iVdHGF09kRjdIhRKtVymYxFhzIQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=icloud.com; spf=pass smtp.mailfrom=icloud.com; dkim=pass (2048-bit key) header.d=icloud.com header.i=@icloud.com header.b=XqGtdR2I; arc=none smtp.client-ip=57.103.76.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=icloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=icloud.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=icloud.com header.i=@icloud.com header.b="XqGtdR2I" Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-100-percent-10 (Postfix) with ESMTPS id ED5FC180039A; Tue, 11 Aug 2026 16:22:56 +0000 (UTC) X-ICL-RepId: 019ff1a2-5a83-772a-aff9-8ae9e4fd2327 X-ICL-Out-Info: HUtFAUMEWwJACUgBTUQeDx5WFlZNRAJCTQ1PHVwPUxxGClYCVAFLVxQEHUAFVgpcQglLAi1eCF4fTBwdDlgGEhZdRVoOWwRHFBcbXAAXGVFNDlhbCFsEDx9MDFECQgVWXkoMHQRUB10FXVZQAlpLQgRLRWhcBVwcQBdIHV9qS1YUBBFQAVgeVl5aF15NWgJWTQVKA18BWwpBCEkFXwVZAV4NSQJdAlkfQxQdQAVWClxCCUsCLV4IXh9MHB0OWAYMUE0BQwgKAlEcVg1X Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=icloud.com; s=1a1hai; t=1786465379; x=1789057379; bh=05b0w/YtTgz36UUatu5KxFxKywEL0tdYAlUL3Cd6rng=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=XqGtdR2In79NUjjsjcmdUNjnuORCriKTvE+Yj4jSk1M8/DchS04UT8KVj7AUPVdt9Fzr46dXxypLwe/9bJ3HIuZzgS6FHpD+0mDwiPynQ5NmLtLveBlBe5Hkyk1jdm1STjGKCJrDug0wfOm6d6SckPQsXOl1ZksPBfsQfy9N6uVEFJgxffGVSHLE9kw4jW8a+c+oVV4MozIM5ybSnPO0oy47cSR51QJFnWktt4OI+Gg8Enm8Srh1qmJt2rz8R9BSunodK2Pma7Zg223DIOqoARdJxnSJRuefKvQkq6qZU80FY/qQdawwW0MMGpjxcq+qVNjbtE+hEp9mxZy6x7jyIQ== Received: from machine (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-100-percent-10 (Postfix) with ESMTPSA id 1B1A4180009C; Tue, 11 Aug 2026 16:22:56 +0000 (UTC) From: Eshaan Deshmukh To: "Martin K . Petersen" , "James E . J . Bottomley" Cc: John Garry , Jason Yan , linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, Eshaan Deshmukh Subject: [PATCH v2 2/3] scsi: libsas: Handle errors in sas_set_ex_phy() Date: Tue, 11 Aug 2026 11:22:22 -0500 Message-ID: <20260811162223.411052-3-eshaan2031@icloud.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260811162223.411052-1-eshaan2031@icloud.com> References: <20260811162223.411052-1-eshaan2031@icloud.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=a8Q9NESF c=1 sm=1 tr=0 ts=6a7b4c61 cx=c_apl:c_pps:t_out a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=Sv0fKeRqtYgA:10 a=x7bEGLp0ZPQA:10 a=ea8ixM18I5MA:10 a=VkNPw1HP01LnGYTKEx00:22 a=v3ZZPjhaAAAA:8 a=PaGFxrA-4Pw6slCmviwA:9 X-Proofpoint-ORIG-GUID: DXmDAf3rjoyH0vRbwwdnaWNECtvh10RW X-Proofpoint-GUID: DXmDAf3rjoyH0vRbwwdnaWNECtvh10RW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDEzNyBTYWx0ZWRfXw+sirHsPuQPP F14DHFc/AVXewcJeJmlkDr1nK7zeZY6w2lrSEzoFrUIqF77XbN2K3j8hXNJlh2wtbjVOTxh3a+T Br37rQA7Po8rUeAESb6r/kug7BJNZp0is9tfdfBMI9ySskcSUP3VZ/iFZtpiqf7Jmyl+VpWxtvc Vg468L9Xti89poZueRkjZ5TNHeghfz1vYoHz+1XpZLYo3hv+rxjFR76Bo10LqE46cV7rQuIechY qo9tICVQqyegbyowE9zO//vAyuar6Uo9Ecpv1PHZxcUTc6w1o+ZUcX0SH515tEQym6IWZi7j8/5 phPBDoZ/6Edrv6+pSXEtb32WJuG7YzRtnxmYqSRLWTjRUAGT1bIJ5Z91XDYqgw= Content-Type: text/plain; charset="utf-8" The function sas_set_ex_phy() uses BUG_ON() if sas_phy_alloc() fails. Change it to return -ENOMEM error code if that happens. Change all the other returns in sas_set_ex_phy() to return 0 to preserve current functionality, or to return an error. Change all uses of sas_set_ex_phy to handle the returned error codes. Signed-off-by: Eshaan Deshmukh --- drivers/scsi/libsas/sas_expander.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_e= xpander.c index f1a1417b0..1aa99e7c7 100644 --- a/drivers/scsi/libsas/sas_expander.c +++ b/drivers/scsi/libsas/sas_expander.c @@ -207,7 +207,7 @@ static enum sas_device_type to_dev_type(struct discover= _resp *dr) return dr->attached_dev_type; } =20 -static void sas_set_ex_phy(struct domain_device *dev, int phy_id, +static int sas_set_ex_phy(struct domain_device *dev, int phy_id, struct smp_disc_resp *disc_resp) { enum sas_device_type dev_type; @@ -220,14 +220,15 @@ static void sas_set_ex_phy(struct domain_device *dev,= int phy_id, struct sas_rphy *rphy =3D dev->rphy; bool new_phy =3D !phy->phy; char *type; + int error; =20 if (new_phy) { if (WARN_ON_ONCE(test_bit(SAS_HA_ATA_EH_ACTIVE, &ha->state))) - return; + return 0; phy->phy =3D sas_phy_alloc(&rphy->dev, phy_id); =20 - /* FIXME: error_handling */ - BUG_ON(!phy->phy); + if (!phy->phy) + return -ENOMEM; } =20 switch (disc_resp->result) { @@ -296,11 +297,14 @@ static void sas_set_ex_phy(struct domain_device *dev,= int phy_id, phy->phy->enabled =3D (phy->linkrate !=3D SAS_PHY_DISABLED); =20 skip: - if (new_phy) - if (sas_phy_add(phy->phy)) { + if (new_phy) { + error =3D sas_phy_add(phy->phy); + if (error) { sas_phy_free(phy->phy); - return; + phy->phy =3D NULL; + return error; } + } =20 out: switch (phy->attached_dev_type) { @@ -339,7 +343,7 @@ static void sas_set_ex_phy(struct domain_device *dev, i= nt phy_id, SAS_ADDR(phy->attached_sas_addr) !=3D SAS_ADDR(sas_addr)) /* pass */; else - return; + return 0; =20 /* if the attached device type changed and ata_eh is active, * make sure we run revalidation when eh completes (see: @@ -353,6 +357,8 @@ static void sas_set_ex_phy(struct domain_device *dev, i= nt phy_id, SAS_ADDR(dev->sas_addr), phy->phy_id, sas_route_char(dev, phy), phy->linkrate, SAS_ADDR(phy->attached_sas_addr), type); + + return 0; } =20 /* check if we have an existing attached ata device on this expander phy */ @@ -397,8 +403,8 @@ static int sas_ex_phy_discover_helper(struct domain_dev= ice *dev, u8 *disc_req, pr_notice("Found loopback topology, just ignore it!\n"); return 0; } - sas_set_ex_phy(dev, single, disc_resp); - return 0; + + return sas_set_ex_phy(dev, single, disc_resp); } =20 int sas_ex_phy_discover(struct domain_device *dev, int single) @@ -2021,7 +2027,7 @@ static int sas_rediscover_dev(struct domain_device *d= ev, int phy_id, * the PHY info, like negotiated linkrate. */ if (res =3D=3D 0) - sas_set_ex_phy(dev, phy_id, disc_resp); + res =3D sas_set_ex_phy(dev, phy_id, disc_resp); goto out_free_resp; } else if (SAS_ADDR(sas_addr) =3D=3D SAS_ADDR(phy->attached_sas_addr) && dev_type_flutter(type, phy->attached_dev_type)) { --=20 2.55.0 From nobody Tue Sep 29 06:08:57 2026 Received: from outbound.st.icloud.com (st-2001b-snip4-11.eps.apple.com [57.103.76.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A25B4570E8 for ; Tue, 11 Aug 2026 16:23:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=57.103.76.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786465383; cv=none; b=KR7T7B5HmZDuvDxe2HcjaTJpBDkBQVYyVFy6z/zzpkdV4sy9TQtVeI6d5d2p0vCPyayrzQb+4XJo92YlmKJpi91qGgOUwtBBnblDfLxE6SOD0eOz2OtJ9f/m1bVwqKT0qIEuocNL7nO3pRHNWgDunoDh4ImqFnKk0I3y9OiXqsk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786465383; c=relaxed/simple; bh=Gm5zOKSEWAhE3mXt3G0dNDJ/PcB4syl2jQ254qbijVE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aNUQKor27kzNoP99O3sAYsJlknIqzeCo3t3xcux0LUAk5UxA2FZYQSabAmIPDX846Ty/RJyLEcSfziIXutnIldoyhur9h9cGaneInzIKTiGs3p9verc2Ajao0sciN4/X4wNuX1rK/eQX33FDyg9DIsaVy/pDPyFLnjDBKf7Ibr4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=icloud.com; spf=pass smtp.mailfrom=icloud.com; dkim=pass (2048-bit key) header.d=icloud.com header.i=@icloud.com header.b=gWCuBOkD; arc=none smtp.client-ip=57.103.76.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=icloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=icloud.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=icloud.com header.i=@icloud.com header.b="gWCuBOkD" Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-100-percent-10 (Postfix) with ESMTPS id 0F10F1801786; Tue, 11 Aug 2026 16:22:58 +0000 (UTC) X-ICL-RepId: 019ff1a2-62a8-7bf8-b2c1-b680490c13ea X-ICL-Out-Info: HUtFAUMEWwJACUgBTUQeDx5WFlZNRAJCTQ1PHVwPUxxGClYCVAFLVxQEHUAFVgpcQglLAi1eCF4fTBwdDlgGEhZdRVoOWwRHFBcbXAAXGVFNDlhbCFsEDx9MDFECQgVWXkoMHQRUB10FXVZQAlpLQgRLRWhcBVwcQBdIHV9qS1YUBBFQAVgeVl5aF15NWgJWTQVKA18BWwpBCEkFXwVZAV4NSQJdAlkfRBQdQAVWClxCCUsCLV4IXh9MHB0OWAYMUE0BQwgKAlEcVg1X Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=icloud.com; s=1a1hai; t=1786465381; x=1789057381; bh=ZFPQIxawaE0fVlWGUO2XI7RNDYyUtq2a9C+Qje6V7+o=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=gWCuBOkDkStokkZeAFJ1+nes182oKjU4NCWZLr8VHxluxh0AoHwYtKhKz+7st9ygVBeONOzoHt/FH53F4lvDnR/B70TdFSlWL/XOqGudlmc5Apol3+crL04efEQZNqJ9Iam77xoMag2H3Xhpj8O2GUx6Ixoz5NkReG4jKYMXuYq2DP47RlbhGJYS3/phGNxq8pIpYlWoJTsTXenWDHkC0MtGd5+3CfFUg2/JNByrF6JBzceBqvK3fAszMnIt4Y1EIDkcgSdcZRc4JznziRjDrSTOT6BKAwEHj9zeX8PbH3hmVxR3I4Id29FlvNEJPTNcslUpb57KzjsQHWoL5avK3A== Received: from machine (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-100-percent-10 (Postfix) with ESMTPSA id 3099C18003A9; Tue, 11 Aug 2026 16:22:58 +0000 (UTC) From: Eshaan Deshmukh To: "Martin K . Petersen" , "James E . J . Bottomley" Cc: John Garry , Jason Yan , linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, Eshaan Deshmukh Subject: [PATCH v2 3/3] scsi: libsas: Handle errors in sas_ex_discover_expander() Date: Tue, 11 Aug 2026 11:22:23 -0500 Message-ID: <20260811162223.411052-4-eshaan2031@icloud.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260811162223.411052-1-eshaan2031@icloud.com> References: <20260811162223.411052-1-eshaan2031@icloud.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODExMDEzNiBTYWx0ZWRfX/8P4V9u6d7Ri Of3wz3XG0wWhzlgccqWW9eOqomcAKj0KQObQjux+do06I3NfEll69EFthrPG24l8jtDKwxIRxOd V9FkAQ4uknF8GBht3ScSi0rokd3r2FRkxrngFKiKZDdCbSzO4nNVugPw0HdOem/SE20mt8tNTtI fykbDmVSTnVewHZFIczIsBVEVhQ0cb0Oymf00v7iRkrFph8ODS0gqXF/8LLHGWurGOuni/Y4CGH OhlmP9+WwdqE8t+CoKUXD87ztAca17NWv9tp/vObsKFlfyZt3YQfprOYs6iP0u3C8W3u++VEiKS bSIFjWg9iDeEXiqlmBzeSC4ctjByzxkhx0CtZELBWohKeO4r91f9tqQiK6Yrgc= X-Proofpoint-GUID: X0ND-97e00y0gjX4U9GofTpwOfV9NM5j X-Authority-Info-Out: v=2.4 cv=NObYOk6g c=1 sm=1 tr=0 ts=6a7b4c63 cx=c_apl:c_pps:t_out a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=Sv0fKeRqtYgA:10 a=x7bEGLp0ZPQA:10 a=ea8ixM18I5MA:10 a=VkNPw1HP01LnGYTKEx00:22 a=v3ZZPjhaAAAA:8 a=G5qPdV8fadFp4kCsiFEA:9 X-Proofpoint-ORIG-GUID: X0ND-97e00y0gjX4U9GofTpwOfV9NM5j Content-Type: text/plain; charset="utf-8" The function sas_ex_discover_expander() does not account for the potential failure of sas_port_alloc() for phy->port. It also calls BUG_ON in case sas_port_add fails for phy->port. Add a check for phy->port after sas_port_alloc() where if it is NULL, it cleans up the child allocated device and returns NULL. Add another check for sas_port_add() where if it returns an error code it frees phy->port, sets it to NULL, cleans up the child allocated device, and returns NULL. Signed-off-by: Eshaan Deshmukh --- 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_e= xpander.c index 1aa99e7c7..f9ae655a2 100644 --- a/drivers/scsi/libsas/sas_expander.c +++ b/drivers/scsi/libsas/sas_expander.c @@ -925,9 +925,18 @@ static struct domain_device *sas_ex_discover_expander( return NULL; =20 phy->port =3D sas_port_alloc(&parent->rphy->dev, phy_id); - /* FIXME: better error handling */ - BUG_ON(sas_port_add(phy->port) !=3D 0); + if (!phy->port) { + sas_put_device(child); + return NULL; + } =20 + res =3D sas_port_add(phy->port); + if (res) { + sas_port_free(phy->port); + phy->port =3D NULL; + sas_put_device(child); + return NULL; + } =20 switch (phy->attached_dev_type) { case SAS_EDGE_EXPANDER_DEVICE: --=20 2.55.0