From patchwork Tue Oct 1 16:02:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 13818334 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2075.outbound.protection.outlook.com [40.107.21.75]) (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 36B181CB339 for ; Tue, 1 Oct 2024 16:03:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.21.75 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727798635; cv=fail; b=mNflGqwdYa4oLuBz0bag/G918Xs3kkJ5hy6KiKKehX39wURNM1nujDmlbkxlCWTRcCsxVmgFoQT5h4dIk1c2aCe3HNMd6AAX7b45XQgC0ONGOIIM13/dsREz0V50u/9guD2lZXxKm7u/yMB8YhLIl1UwsLEy11zK6XbCBBAee9c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727798635; c=relaxed/simple; bh=Lzz1dEezZFI4AwXDduLO9+qDTwqAGzmLOSOsxS0fuR4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=hYpY6zPfboH5AN2pzICD5qjx+ExsQ4zP4SWvbKFrC4/hrrQ3zqtvFxEIFS+K09gVcalqycL1qiV6t16Qjzl5m2SOrp/LMM/+rd16eA8thcW3ifpM59h1WqsmOQnjDUL6QQyYkDLcTmkG7tburKMmfhYeRjaxCOKmMz2TyrEcSsU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=Iusyqb+h; arc=fail smtp.client-ip=40.107.21.75 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="Iusyqb+h" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CX7JH/69AAEYU85xxdbHUz7zfutJFhkzK4dVtVNxKLDvURXCVBGkAl1QRaGkPkbeHx5zrBYONJ7ytvSlKb2I+yt5IrxdzvRnr8CjDjfwYU8NGl6zoDoWHHsiVzQx+LvZCxBOid3xYYSV3zXmCZ61vXKV5G3/0gfT8LmxtREbxG9JMLPNKCyvX4rITRmWRDkjgOkaFqngojmo7zijm43bPZppuxjAstC5hi54ns1WEhKvdb1Tse4HNIwi+Ni5ViZnY4geNlIytUJkYP4I/fubOcejzqbev0/YuVgM2Mart4PFtQXwTUwEKUDntCRhdm/tzktzKTBoQgTeDDBWbmH9VQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5cRfK2j38fogPonMcQkqHwej6AD1wb6XToeJuSU7HUk=; b=swipQALJinw05jynUvaosaQuylaulEVHifKmmjCbynuavD42L8mMtqp2HelBJ+RYY5QgE53EvnywTTPd6U4Yde56Ymoa6BmyCeVn5tgjj2ixmdst2Z2gPE63mdYYUs3gOxOD5ScMCej+bmXiAkNc2v07OcLG9izuQe9PJ5P2SAGN/oEN478Rd/eeH4eu92kk4hLsyZR0EV9T2vbnacL7zeob6ldj01W8ENguH1T5fcvCk+dtmWS6wNCXqB9/6FQO8X5NKe12qlYiCRM9fn37fKYuAZhHZjwl3tsaGwSugBp4/TF/27F/13MfdpusGfkNRjZFm2IJHxyebiS/WFmSyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5cRfK2j38fogPonMcQkqHwej6AD1wb6XToeJuSU7HUk=; b=Iusyqb+hjM/wIDyvF7O+GGlDmACAn6r5Zo9DMmOTtA/EZ5CDxH00I3j47iemPxCzQ1lmjIom1qndPLaXJV+Y6zsbWhXK0B3q2Yg5VvjYGmotZ5NiyorC1gzVr25nUbuwTM5rWHc/RAj2AiYOOlnWa5+I7qkA62TipveQYIWsZ1A1CudX1FQoyatZEwAGKadqCfrldlhRzEBm3luJGcK7683Eo3NawmsQU3ufUL2ItpF9quItOVriy1E2OwKpsee4aIDBIJwqByH6Lr+2+C/8t05TKDEalHCsSp2FcXEQlmDJP9AmCTDB45dsewSOLBBK32cT9OGQ+B8jp96kHWTPVg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) by VI0PR04MB10437.eurprd04.prod.outlook.com (2603:10a6:800:216::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8005.27; Tue, 1 Oct 2024 16:03:47 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%4]) with mapi id 15.20.8005.024; Tue, 1 Oct 2024 16:03:47 +0000 From: Frank Li Date: Tue, 01 Oct 2024 12:02:55 -0400 Subject: [PATCH v5 6/6] i3c: master: svc: fix possible assignment of the same address to two devices Message-Id: <20241001-svc-i3c-hj-v5-6-480ab8aed849@nxp.com> References: <20241001-svc-i3c-hj-v5-0-480ab8aed849@nxp.com> In-Reply-To: <20241001-svc-i3c-hj-v5-0-480ab8aed849@nxp.com> To: Miquel Raynal , Conor Culhane , Alexandre Belloni Cc: linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, Frank Li , stable@kernel.org X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1727798616; l=3184; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=Lzz1dEezZFI4AwXDduLO9+qDTwqAGzmLOSOsxS0fuR4=; b=TEXoN3k0liEFXoQbSInw+FiOr88enzOfH63V69sf7J/hRdxFHRKNOpX6qM5ZoBKPzNlJpLOAt xLOfabkDbAlAdRypyYDKOEaM4PFYpLyRZOM0vs04xLapuGC51v5u0FW X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA1P222CA0045.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:2d0::22) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: imx@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|VI0PR04MB10437:EE_ X-MS-Office365-Filtering-Correlation-Id: e8c6114b-3274-49aa-bc1e-08dce232a1cc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?C305Qg/ZW72UQdXisG4TfnLendPe1SU?= =?utf-8?q?h1HQpH2zTjlWR2RzJb8DtSsKiD0VPpRKR6D8ZnrG3Lg+0IpbGQJLQA3z7wco9xNU7?= =?utf-8?q?7c2RmXjXcJevLc+qaw3naaPGRjNObSixiusLX+Ayi3tRaxNjmx3lrxJNHWI+WNGG/?= =?utf-8?q?fLIyvuY6yaYEZgYGPjkULWhwzpDY04aQSmvPoVb0B/cmm/0Le42qRNABfqJkvhOnS?= =?utf-8?q?sGJ0Q8/HdTY0E9IR/KC01VcrxApPhw+GawNuFsjemwdzoud4p08EPrl8X7epPqytq?= =?utf-8?q?yi57eNAJDnNwa1DryKrVIGvygRhJ2ro82irKZXjLDerPUaYzIBHPH4/MO/I5wuy14?= =?utf-8?q?eV0TVfkaStGXIhcfeKBkl0PWf7uZaVcJgHYKRT2eBEOTMBquUWowrH5iKY9+zVGbB?= =?utf-8?q?fwBQXj22nWWZG2pPZw0tAoBgxAin1eV5PfnqQne3mGjUR9rCk2kxNaWqZdwJCnGTa?= =?utf-8?q?FozI3tT7pYGc2Yug41SSFyjKOHEz5eubdF3NH6JcKUfvseqRPLzaDmNxMOYgbFf7r?= =?utf-8?q?663I+LPHsZMlssIz1UsGDBI/V6g0jP6yfWWdBK4loy8oELrGNk/B2VQhefIZ9+0G2?= =?utf-8?q?hAGyfFlIsnz2+HIeECDzMUfjALgEAJTwIAGe3NcFQlKhoQfSxv13xIKajKaQDL2Dc?= =?utf-8?q?ALaZFCSWRLl1JttyQa8LAwqB8myXY7f6J7I/kk+5Xl/QOXrgsP3i+wGWEE+TbupWk?= =?utf-8?q?WPk8CJrfX9ytRvdLrBi54Cv0OmUhhopY79cSy1Z+JkdIo88HSndEvNlnBNlG0i3vq?= =?utf-8?q?z5/7/jsrBKTvDDLOd6KnomQTUGh3+qAWCqsxkfsM+p/uk3Sm5UPYmSCsiHZmG+u7/?= =?utf-8?q?mhV052a/ixmZnvsFFhmmpWNIQxCZ06m/eP2ZBT/hBupYafuEi6/l5sVUI/T+SnVBf?= =?utf-8?q?JkjCPB3JIPHlbgCx5MJd0OoEFmWuFzKFMvx+ZDsjtrpdSgWlaUSXeMcIxSdDa6lFk?= =?utf-8?q?H8Vgagxl6lgiWBtSxUhFYLOkph49gXld6T4rkx3Dgdbee4tjsQQ8IsCMws13vIkY3?= =?utf-8?q?8987UsuANhgFkZcAAo1hfQ2ut92ABDwONI1LRVSZ01qJo7G+YFMrTlbjmefmvKc/1?= =?utf-8?q?YeGRNAKSjHzEcU0CKoZ0OKCiTn8RHX2yANTVb1OgwCyhTNxo+k4H0lBs6YTIL2MbR?= =?utf-8?q?xskMbBHDPyLupYDLa+odewW1VrQ2Dk6lh01kKP6ipRYiVYUUCnTi8M3Pj6/Y/sZ24?= =?utf-8?q?HjP64vNNG0d46tq6O/aCaKf63Sl+ABiXEsBxrpdnofBrq6JJJcDlAWYWEEgr8OWmS?= =?utf-8?q?ZHXqWmoS9/Okw3LIbs6om5KfNySwKQsT2ZpTJPuzmAqZAY7DgSmLQF8FYoznoduKq?= =?utf-8?q?Vrg5E+/i6c2suA6QbHW7xYugAVpcqRW6KA=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB9642.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?RyCfm40cn0QYXjWepkd9IrgNCA9T?= =?utf-8?q?N/vkLu5wOx3zCIp77CBNeNNuSnlJKKsLeTrC1UU2qKu8MQVaDA1ostP9V4RoXEu7a?= =?utf-8?q?aBOmUKsfRvRSx2RTWoSb376KWpz+WbK9yqvdUupVl+cl6KLS8q/Xog2LL00TschKh?= =?utf-8?q?ArJYg5cbsk7UCVBLqZ0RhcaefkXawOHdZA/tBcTmBAb9/zcnYKFd700l6o+vYeHRY?= =?utf-8?q?PKanKSf0Jg/PJ6Q75zJUuY2CJ+8RVPBqYv/JJ64I/OidsNXl5QOBXj1vXvQy9DS/X?= =?utf-8?q?ROx5bF0hyamZHZuorl41S4cDYo/wiowA70BAm+2Z5IguUPulUhd7XTqi1zpMdczJ8?= =?utf-8?q?cCLlGmZSx2XTpjLIf250tX0ddfgK0ONv+Onf/9tWWHp9Zw7K3M4miPsGLEXeHXf7u?= =?utf-8?q?rDVAna7eivgR3DRREAwY+7VljkVOzGcYEU4PivqXq88PeUPkG0C2INjSEeLkawzwO?= =?utf-8?q?BpnJMt7OEvhGbso35ngpfyKSjOKOzaj6k0QGSIDptOOw725ipke5ZWXVkKt4Epq5R?= =?utf-8?q?bTw8XJlZyi+6+TdYrZD+x3m428F9WW1kgZASrF/aVQQzrhU+riz7ftsDyZ/tX90MW?= =?utf-8?q?FaRK0jRIW6OlW+el2HET51tvYJaYgfPnfIOl/rpah2Uxz2obO0IsXpoY9CIxfWbXf?= =?utf-8?q?3GxK80LeFj01ipO4/g3z21eWpN5SDiXQMcPuqXzCariuJxF1XYtK8s0g+sNrL5DIi?= =?utf-8?q?JH/4r+xB92b7qb1ii+KOCJSyoY3RJTKsickXRw/+oYaDpxtBhrbCUMRel/yVRbyRS?= =?utf-8?q?thnGxEtgXrOz9OXWnOByp8y3emQybI1w9hs0uw60eXs46SFSZMmus6h8Obvavk/gY?= =?utf-8?q?lNZSDNwwmp/XBGnOn8Bko459c1gARj7toucIqBjJ6CTGhw5rwSkEK/i6tyWfp8bFE?= =?utf-8?q?dCAFwIuKSxoD6fRRFDNS3jbtccfbeDfGG3voiV1pC/69rVJ0fxU8jEunhha0n9/Ie?= =?utf-8?q?Xehr+kBb9iBJ8jz+z/OPCugdg8msJw2sWE3fVWeJeKhgyJcXDVxIPvQRJfpJizuaH?= =?utf-8?q?jNjPjuVTZ+XRZmvL57FUtfeaQD3YhiOJHD8lSU4gArQcE4bOSaSHMOMT5DzRjHt51?= =?utf-8?q?GSF/7AzFn0iNvJ/E33RzefRsNk9R/JVQu5V6ofG8CUUmgKCS7d2TchqfOxEaQ3+NB?= =?utf-8?q?A26omrpOrKYIJc19Ny9m9WsU1djoIQ2yunfqA88epX7LQiPqy4tvcdqtIhdx3FXUL?= =?utf-8?q?4ifB+DZeEvVQdGV84JCdLBv7EaU2HqKcWiHNkFh+HHoQWtqAdirA80iUmbArUVTb5?= =?utf-8?q?pk/3x+b08uygYYQkFAmhXDW+Xg2EdP1ykzSZJ4YaW+7sZUn+5KLJLUrUq2wAVwPH3?= =?utf-8?q?Bz6bk2NYtv/ANBRLbPHLUCQZAylePFYr4lhBAjmT/E6oAaK6mB/ukpHEu3SwUxc4d?= =?utf-8?q?0+Vnd22rbccIwmqYgiRlGPYi1R63KwiQw6uwQe9jbkbBJA25JaAN0C2NjaCOZrjCC?= =?utf-8?q?g1y8M57ggFDSo7ABFgT5ZR4VFU5KOSLgwZGmDpptukU/wj/q3mr8v6L8=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e8c6114b-3274-49aa-bc1e-08dce232a1cc X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 16:03:47.1323 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ethg2vEHRd6OS0onETZUDnWLTAFeEJH6+QrxXx8RWpOejfhxNDLx5QETYcr4WJNE17NzSJywseWDD1ZYuxt2GQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10437 svc_i3c_master_do_daa() { ... for (i = 0; i < dev_nb; i++) { ret = i3c_master_add_i3c_dev_locked(m, addrs[i]); if (ret) goto rpm_out; } } If two devices (A and B) are detected in DAA and address 0xa is assigned to device A and 0xb to device B, a failure in i3c_master_add_i3c_dev_locked() for device A (addr: 0xa) could prevent device B (addr: 0xb) from being registered on the bus. The I3C stack might still consider 0xb a free address. If a subsequent Hotjoin occurs, 0xb might be assigned to Device A, causing both devices A and B to use the same address 0xb, violating the I3C specification. The return value for i3c_master_add_i3c_dev_locked() should not be checked because subsequent steps will scan the entire I3C bus, independent of whether i3c_master_add_i3c_dev_locked() returns success. If device A registration fails, there is still a chance to register device B. i3c_master_add_i3c_dev_locked() can reset DAA if a failure occurs while retrieving device information. Cc: stable@kernel.org Fixes: 317bacf960a4 ("i3c: master: add enable(disable) hot join in sys entry") Reviewed-by: Miquel Raynal Signed-off-by: Frank Li --- change from v3 to v4 - add comments about not check return value - add miquel's review tag --- drivers/i3c/master/svc-i3c-master.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c index 3388c9af63fcc..7dc52111ee0f1 100644 --- a/drivers/i3c/master/svc-i3c-master.c +++ b/drivers/i3c/master/svc-i3c-master.c @@ -1103,12 +1103,27 @@ static int svc_i3c_master_do_daa(struct i3c_master_controller *m) if (ret) goto rpm_out; - /* Register all devices who participated to the core */ - for (i = 0; i < dev_nb; i++) { - ret = i3c_master_add_i3c_dev_locked(m, addrs[i]); - if (ret) - goto rpm_out; - } + /* + * Register all devices who participated to the core + * + * If two devices (A and B) are detected in DAA and address 0xa is assigned to + * device A and 0xb to device B, a failure in i3c_master_add_i3c_dev_locked() + * for device A (addr: 0xa) could prevent device B (addr: 0xb) from being + * registered on the bus. The I3C stack might still consider 0xb a free + * address. If a subsequent Hotjoin occurs, 0xb might be assigned to Device A, + * causing both devices A and B to use the same address 0xb, violating the I3C + * specification. + * + * The return value for i3c_master_add_i3c_dev_locked() should not be checked + * because subsequent steps will scan the entire I3C bus, independent of + * whether i3c_master_add_i3c_dev_locked() returns success. + * + * If device A registration fails, there is still a chance to register device + * B. i3c_master_add_i3c_dev_locked() can reset DAA if a failure occurs while + * retrieving device information. + */ + for (i = 0; i < dev_nb; i++) + i3c_master_add_i3c_dev_locked(m, addrs[i]); /* Configure IBI auto-rules */ ret = svc_i3c_update_ibirules(master);