From nobody Sun Feb 8 04:23:23 2026 Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) (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 9F90F19F135; Tue, 20 Jan 2026 02:40:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=67.231.156.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768876842; cv=none; b=WsnY5MxHk96Xb+fScLKBPahoHGSJRetvpQuV49w6S0VzAYLgogVsFJ/ihnV5Z7kM6fMNL6v8iJXxou+WvMXksFPaoFmywIqIeo5IiMSB7H4hNMe3RhNcWo0v89leZRiWvO7LJxxpF+brmIerkpzFFYDd0SviHrKX1VFcgZmrPAo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768876842; c=relaxed/simple; bh=0RlVdHe//tMrY9/TaAgUPqkBM4kgKDUVl8S3tiU4ELA=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=rYcbfbXsLA5u3T5ittmRyBdEx9CN0rEJN3LRymTwPM4T+BeLngitm9mBLK0WF0kqB0Sv4KWygnwNLZv0oZt9WMU3vbo3qOlmM05pROL1qlspjyV/pmLCSP0hAGkQfS48zjOpGauPJYFIV9pYROlF4nQqZnpzvIlPUuEXG5kHhOE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=marvell.com; spf=pass smtp.mailfrom=marvell.com; dkim=pass (2048-bit key) header.d=marvell.com header.i=@marvell.com header.b=RQZiVrjU; arc=none smtp.client-ip=67.231.156.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=marvell.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=marvell.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=marvell.com header.i=@marvell.com header.b="RQZiVrjU" Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60JNlDPn3603844; Mon, 19 Jan 2026 18:40:30 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=pfpt0220; bh=Bp3bEe1EaWglwdXuwJrg4fm SqbhmxbpTUp3u4lHnDc0=; b=RQZiVrjUT9pGSL6bw/7Qfgf763FZJypJD9Y2yc+ 7WGjil85DM6gDkWjzHvkxzVFaRH+RUsxWtBIgmYhhxtvlO1nMmnZX7BJSdA/5kYy 0ShnvXlYuRvnIBsZ5eQto/6pm6WVdqGNQMONFGEA2nonw+Vptt08rNkMd8LiZV7w cSBM1ZuFw9YBvphwApTPYBlBNvQCab10yWgKnVrFkvUvvIqQyxm8wcW8X5pAVeUC W++xvXdJ9OcmwMnDIct6QMM9fz4KCxOR67S+gxWEQWwZSkAVXt416cSUuQ0yLtj7 AZ8C+W00LvLaIICJRXJW3//2XfbGxphutF/zyIzD6+5axvA== Received: from dc5-exch05.marvell.com ([199.233.59.128]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 4bsg209tbw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 19 Jan 2026 18:40:30 -0800 (PST) Received: from DC5-EXCH05.marvell.com (10.69.176.209) by DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.25; Mon, 19 Jan 2026 18:40:45 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH05.marvell.com (10.69.176.209) with Microsoft SMTP Server id 15.2.1544.25 via Frontend Transport; Mon, 19 Jan 2026 18:40:45 -0800 Received: from rkannoth-OptiPlex-7090.. (unknown [10.28.36.165]) by maili.marvell.com (Postfix) with ESMTP id F014C3F709A; Mon, 19 Jan 2026 18:40:26 -0800 (PST) From: Ratheesh Kannoth To: , CC: , , , , , , "Ratheesh Kannoth" Subject: [PATCH net] octeontx2-af: Fix error handling Date: Tue, 20 Jan 2026 08:10:12 +0530 Message-ID: <20260120024012.1292307-1-rkannoth@marvell.com> X-Mailer: git-send-email 2.43.0 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-ORIG-GUID: AwP0iH78lb8is3LdxVKEXuWiCrXSEA0F X-Authority-Analysis: v=2.4 cv=XPY9iAhE c=1 sm=1 tr=0 ts=696eeb1e cx=c_pps a=rEv8fa4AjpPjGxpoe8rlIQ==:117 a=rEv8fa4AjpPjGxpoe8rlIQ==:17 a=vUbySO9Y5rIA:10 a=VkNPw1HP01LnGYTKEx00:22 a=M5GUcnROAAAA:8 a=IO1IhOr4ACUM0QXF5BIA:9 a=OBjm3rFKGHvpk9ecZwUJ:22 X-Proofpoint-GUID: AwP0iH78lb8is3LdxVKEXuWiCrXSEA0F X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTIwMDAyMSBTYWx0ZWRfXx2egeDURy0Xy 61Akf5Gqsnl5mj0+Z8PX9lMbRjaFS1vqXcNHqhnWMr/vqsIsqW0RamXqWkhwJZu3EaDpe8XOWGA TDiprUxP15UVJFKq/QVJcDO/i5i+x8z3PtuuOxpx465JwU/sUttrCxbkf9PWh0553N6Od8gr4+m SNzbbcVCqkOo4JF74lDYzQY2qfLaAhB0La8zKHgI2t1y9TRXzOf7J80O+s/9891uw37F5EpacsI S6K8vINdrQS25hC/iZxXIpEv5lG4NYk0YTUxK5dQirg9dCWLt3qQQHJbk5UYCXdumM4vRSYOtR8 d+aJ1yHCr85rn6+Ut2EJSfziNa3DxzrHXYo/0wPkbUpSOIMcSTJvlLzfTbbY3tRZlxFn70tggjK NROdkSpCT8CkKsEzLd6E+d4W/bF96d3kIgtd8t5HJMprevrHbVAHYvzxEx2jKdd7Nsz+87+fZWQ STNISVlJvhFaNpxpuIA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-20_01,2026-01-19_03,2025-10-01_01 Content-Type: text/plain; charset="utf-8" rvu_mbox_handler_attach_resources() was not handling errors properly Fixes: 746ea74241fa0 ("octeontx2-af: Add RVU block LF provisioning support") Signed-off-by: Ratheesh Kannoth --- .../net/ethernet/marvell/octeontx2/af/rvu.c | 86 ++++++++++++++----- 1 file changed, 63 insertions(+), 23 deletions(-) diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu.c b/drivers/net/= ethernet/marvell/octeontx2/af/rvu.c index 2d78e08f985f..9b898d718fbf 100644 --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu.c +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu.c @@ -1396,7 +1396,6 @@ static void rvu_detach_block(struct rvu *rvu, int pci= func, int blktype) if (blkaddr < 0) return; =20 - block =3D &hw->block[blkaddr]; =20 num_lfs =3D rvu_get_rsrc_mapcount(pfvf, block->addr); @@ -1551,8 +1550,8 @@ static int rvu_get_attach_blkaddr(struct rvu *rvu, in= t blktype, return -ENODEV; } =20 -static void rvu_attach_block(struct rvu *rvu, int pcifunc, int blktype, - int num_lfs, struct rsrc_attach *attach) +static int rvu_attach_block(struct rvu *rvu, int pcifunc, int blktype, + int num_lfs, struct rsrc_attach *attach) { struct rvu_pfvf *pfvf =3D rvu_get_pfvf(rvu, pcifunc); struct rvu_hwinfo *hw =3D rvu->hw; @@ -1562,21 +1561,21 @@ static void rvu_attach_block(struct rvu *rvu, int p= cifunc, int blktype, u64 cfg; =20 if (!num_lfs) - return; + return -EINVAL; =20 blkaddr =3D rvu_get_attach_blkaddr(rvu, blktype, pcifunc, attach); if (blkaddr < 0) - return; + return -EFAULT; =20 block =3D &hw->block[blkaddr]; if (!block->lf.bmap) - return; + return -ESRCH; =20 for (slot =3D 0; slot < num_lfs; slot++) { /* Allocate the resource */ lf =3D rvu_alloc_rsrc(&block->lf); if (lf < 0) - return; + return -EFAULT; =20 cfg =3D (1ULL << 63) | (pcifunc << 8) | slot; rvu_write64(rvu, blkaddr, block->lfcfg_reg | @@ -1587,6 +1586,8 @@ static void rvu_attach_block(struct rvu *rvu, int pci= func, int blktype, /* Set start MSIX vector for this LF within this PF/VF */ rvu_set_msix_offset(rvu, pfvf, block, lf); } + + return 0; } =20 static int rvu_check_rsrc_availability(struct rvu *rvu, @@ -1724,22 +1725,31 @@ int rvu_mbox_handler_attach_resources(struct rvu *r= vu, int err; =20 /* If first request, detach all existing attached resources */ - if (!attach->modify) - rvu_detach_rsrcs(rvu, NULL, pcifunc); + if (!attach->modify) { + err =3D rvu_detach_rsrcs(rvu, NULL, pcifunc); + if (err) + return err; + } =20 mutex_lock(&rvu->rsrc_lock); =20 /* Check if the request can be accommodated */ err =3D rvu_check_rsrc_availability(rvu, attach, pcifunc); if (err) - goto exit; + goto fail1; =20 /* Now attach the requested resources */ - if (attach->npalf) - rvu_attach_block(rvu, pcifunc, BLKTYPE_NPA, 1, attach); + if (attach->npalf) { + err =3D rvu_attach_block(rvu, pcifunc, BLKTYPE_NPA, 1, attach); + if (err) + goto fail1; + } =20 - if (attach->nixlf) - rvu_attach_block(rvu, pcifunc, BLKTYPE_NIX, 1, attach); + if (attach->nixlf) { + err =3D rvu_attach_block(rvu, pcifunc, BLKTYPE_NIX, 1, attach); + if (err) + goto fail2; + } =20 if (attach->sso) { /* RVU func doesn't know which exact LF or slot is attached @@ -1749,33 +1759,63 @@ int rvu_mbox_handler_attach_resources(struct rvu *r= vu, */ if (attach->modify) rvu_detach_block(rvu, pcifunc, BLKTYPE_SSO); - rvu_attach_block(rvu, pcifunc, BLKTYPE_SSO, - attach->sso, attach); + err =3D rvu_attach_block(rvu, pcifunc, BLKTYPE_SSO, + attach->sso, attach); + if (err) + goto fail3; } =20 if (attach->ssow) { if (attach->modify) rvu_detach_block(rvu, pcifunc, BLKTYPE_SSOW); - rvu_attach_block(rvu, pcifunc, BLKTYPE_SSOW, - attach->ssow, attach); + err =3D rvu_attach_block(rvu, pcifunc, BLKTYPE_SSOW, + attach->ssow, attach); + if (err) + goto fail4; } =20 if (attach->timlfs) { if (attach->modify) rvu_detach_block(rvu, pcifunc, BLKTYPE_TIM); - rvu_attach_block(rvu, pcifunc, BLKTYPE_TIM, - attach->timlfs, attach); + err =3D rvu_attach_block(rvu, pcifunc, BLKTYPE_TIM, + attach->timlfs, attach); + if (err) + goto fail5; } =20 if (attach->cptlfs) { if (attach->modify && rvu_attach_from_same_block(rvu, BLKTYPE_CPT, attach)) rvu_detach_block(rvu, pcifunc, BLKTYPE_CPT); - rvu_attach_block(rvu, pcifunc, BLKTYPE_CPT, - attach->cptlfs, attach); + err =3D rvu_attach_block(rvu, pcifunc, BLKTYPE_CPT, + attach->cptlfs, attach); + if (err) + goto fail6; } =20 -exit: + return 0; + +fail6: + if (attach->timlfs) + rvu_detach_block(rvu, pcifunc, BLKTYPE_TIM); + +fail5: + if (attach->ssow) + rvu_detach_block(rvu, pcifunc, BLKTYPE_SSOW); + +fail4: + if (attach->sso) + rvu_detach_block(rvu, pcifunc, BLKTYPE_SSO); + +fail3: + if (attach->nixlf) + rvu_detach_block(rvu, pcifunc, BLKTYPE_NIX); + +fail2: + if (attach->npalf) + rvu_detach_block(rvu, pcifunc, BLKTYPE_NPA); + +fail1: mutex_unlock(&rvu->rsrc_lock); return err; } --=20 2.43.0