From nobody Fri Oct 3 08:47:48 2025 Received: from mail-qv1-f47.google.com (mail-qv1-f47.google.com [209.85.219.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B9C90326D4A; Tue, 2 Sep 2025 19:04:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756839889; cv=none; b=bvuM+1cynvwtHeoyF0iNWfxoMlliGPK+YFuzA/fx0E+doZezYygez02uRbnmw1/e5MfYwWoSrLreu4Wx/mMpzIfEQl5JNvKr5LTn+FuUjnh2U+LFjPhGHceMk6NwIPFYyFoglhshwDWXAPb2wqPYYM0DCalYyD8QHtXUTVaXDS8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756839889; c=relaxed/simple; bh=OBA5/qS90gZbqoJ8US40ABfPjflCrthTFScrxnQA9Pw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=dH/ssoFV3U1B7ipYsd3gNT7fmF8gxo5fGRg7UisQMg6QmkvsVt3dE9T83zx8HDNcIURe9nKqFQWpz5b/a6Kl5nKuP9YNH5Nyp8YaURJtUHJsfCWtPoMbET0Q1rH7PLiWKHE/hGM3MRXB8OE6HdQSxeYozr8MKJEMnEKT+q66wd0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MmIeU/3w; arc=none smtp.client-ip=209.85.219.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MmIeU/3w" Received: by mail-qv1-f47.google.com with SMTP id 6a1803df08f44-7220d7dea27so4812966d6.1; Tue, 02 Sep 2025 12:04:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756839887; x=1757444687; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dJvvsdiGeIBZ7n8NIzEjfrsZgmKN1e5bRQ1o1wqAxR4=; b=MmIeU/3wnEbY46O+scv5YhTwNctMgavmPEe/qUe5ihmyCHb/dGgEl2XiEDvQh5ZaMq aDzJmCASUaXdJgxU5FVGAxKSZcyppoQp4p2NAKuXJuoXFP7HFDC8C2Z0Gmd2ZLPPC60j FasfePbqxbP9Gv2Rvfuhoy5VtLj3IJyBpkgWgO9wvwX5Zt75eP7qT14MyRzFrCRtRQtJ PgE+0bDspG4uSIrVaa/5Me9FRufJphV2aq4m5KQewmeKCGHnUwak8DTzdPUlzx+PXhpo jZahYKJWNratHBrIMnV8snEBXbcAs0Ku2U2ZXnM2WqAsqLkiTBDvtnCAya69QmUIreft wCMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756839887; x=1757444687; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dJvvsdiGeIBZ7n8NIzEjfrsZgmKN1e5bRQ1o1wqAxR4=; b=n2fwusyL3c368sXXbg/HgDzBih3gdopZJ7dOVF7/u2gmYvuLZSAIRSUyRU1G0Gwmhd HICwBeI40r/c4A7x9Zk9F7GvSKGTXp/U0dlW+qjcGL8C2Wsd2F9bHhEhnoU9rC2FOu7Y BliYwisvtxDbJUfhErJUbeTuij7HzRw6qXbUjcBPea1ytdl7msFm0kyEFYkhteOKCw9h TnLb4qap4DM+qkG5+yh4Vsg3erdBJy4htJ+n5eyHcRiFM1ar1adr9NdNUEIER5EPjDi/ k4VcuZzmW9IWVmiVZ87ktbXqNrQzCUIJwlyAvp4IRp2OiFlEgyUMf+YMf8A20I4yAY42 MYxg== X-Forwarded-Encrypted: i=1; AJvYcCUjU7EQ3PC6HSVZQ1gFZsLMStHajlhfI8/0tHoe7+OT9kJgZEWPgZnZ+guniRi+soWrKt01d79KpF/W@vger.kernel.org, AJvYcCXvORzYJca+5yRKsx0q3cH/5GuoPfGQpJ2JBG6yzYJQ47jf337ejLTRYwTlfkc5s6n7mfPnTJjc8Dw3ysZW@vger.kernel.org X-Gm-Message-State: AOJu0Yw+eAiYZxeHCXmbxMhYOxeQMSfeWM1EdaOjNTPI8z1HE0aA6WdV cN5ke4Nx44eEVWlNlz77lwPQ8bmCsBi8R4tLI1IRwxkHMOMze2aCJDDe X-Gm-Gg: ASbGncvwc+MAe3/UcRFAPFNVBeAgrnOejoQZM1K7hFglEQcwRCT3bU4q2eDyAsW7N5A Lx9SCCtnaItfW0jeOSeEIl4XQeAhrtOHjhBSxVn/Nxd9+y/0WKQX65pG5X+ZXwn8ZsORBAppEFv vdDQHe29mxQLIZg0v5tGiZ8IPeXxE+Z1fmLawQdye7ixP7HRNVAZozICc37bhIopPAL3B4f+X6O mwQ9hldNpGJEd6YM0OEGarVYGzYCC/L/fqDx8UKkSMju8B25J0sD/yGcnLgXBhwYFecR2wGM4/W forTZQFktaMUFyHKXTZCJaK+27gt6mouauwfAg1vlc2xLYqmfUtlXspZ/+UuaK8BjIvQ7EGOoUV GF/BNB3Q04I2nqmj4Z88Uq3q5oQJp9Ys/2AyZdWYvDzNSXjAMwAmg9vxLVPtGUroNcfYkwH4qxV ty8ca4r9X+lolGYw== X-Google-Smtp-Source: AGHT+IEvnA5g3H02GlkgySU1cObOh0moDx5rrLr3spVyG43e9BSWGnKfXx4rzmVgi9zRu6jpgmPbsw== X-Received: by 2002:a05:6214:246f:b0:70d:e473:807 with SMTP id 6a1803df08f44-70fac883cd5mr150225986d6.39.1756839886373; Tue, 02 Sep 2025 12:04:46 -0700 (PDT) Received: from localhost (modemcable197.17-162-184.mc.videotron.ca. [184.162.17.197]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-720b5b9c7e1sm16127096d6.58.2025.09.02.12.04.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Sep 2025 12:04:46 -0700 (PDT) From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Lessard?= To: Wolfram Sang , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org Subject: [PATCH v4 1/2] device property: Add scoped fwnode child node iterators Date: Tue, 2 Sep 2025 15:04:39 -0400 Message-ID: <20250902190443.3252-2-jefflessard3@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250902190443.3252-1-jefflessard3@gmail.com> References: <20250902190443.3252-1-jefflessard3@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Add scoped versions of fwnode child node iterators that automatically handle reference counting cleanup using the __free() attribute: - fwnode_for_each_child_node_scoped() - fwnode_for_each_available_child_node_scoped() These macros follow the same pattern as existing scoped iterators in the kernel, ensuring fwnode references are automatically released when the iterator variable goes out of scope. This prevents resource leaks and eliminates the need for manual cleanup in error paths. The implementation mirrors the non-scoped variants but uses __free(fwnode_handle) for automatic resource management, providing a safer and more convenient interface for drivers iterating over firmware node children. Signed-off-by: Jean-Fran=C3=A7ois Lessard Acked-by: Danilo Krummrich Reviewed-by: Andy Shevchenko Reviewed-by: Sakari Ailus --- Notes: checkpatch reports false positives that are intentionally ignored: MACRO_ARG_REUSE, MACRO_ARG_PRECEDENCE This is a standard iterator pattern following kernel conventions. include/linux/property.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/linux/property.h b/include/linux/property.h index 82f0cb3ab..862e20813 100644 --- a/include/linux/property.h +++ b/include/linux/property.h @@ -176,6 +176,16 @@ struct fwnode_handle *fwnode_get_next_available_child_= node( for (child =3D fwnode_get_next_available_child_node(fwnode, NULL); child;\ child =3D fwnode_get_next_available_child_node(fwnode, child)) =20 +#define fwnode_for_each_child_node_scoped(fwnode, child) \ + for (struct fwnode_handle *child __free(fwnode_handle) =3D \ + fwnode_get_next_child_node(fwnode, NULL); \ + child; child =3D fwnode_get_next_child_node(fwnode, child)) + +#define fwnode_for_each_available_child_node_scoped(fwnode, child) \ + for (struct fwnode_handle *child __free(fwnode_handle) =3D \ + fwnode_get_next_available_child_node(fwnode, NULL); \ + child; child =3D fwnode_get_next_available_child_node(fwnode, child)) + struct fwnode_handle *device_get_next_child_node(const struct device *dev, struct fwnode_handle *child); =20 --=20 2.43.0 From nobody Fri Oct 3 08:47:48 2025 Received: from mail-qk1-f173.google.com (mail-qk1-f173.google.com [209.85.222.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 540D534F476; Tue, 2 Sep 2025 19:04:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756839890; cv=none; b=ITPpOM9UpWNz5hmTbTSNnGJ9pYhbTbGiCQDKk/MU8hJRY3tFrW6Rcy0dpgnkhqbhLsofDKrt0snsunsN5wDdLwRJVAMUFx/AifyWdzhur8qfG4FPAqqLXLotepYCxKXmHbg382q7dk60dF7wYtxa2NdiAb1JzyJh3Msa5fWPo2I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756839890; c=relaxed/simple; bh=Ro9bL/h3JECoVAbyyLvJ++g9EHdRHXV/HLcI2NUJkc0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=mwGGaBpVv0EIbY3Ckk7sXlPT7lRiIyMQJ0UGGGz17OJtsP88wHDhGCJyqWvQsbJqBxYRE1G2KengS1oqXmkRZyN9glFZLXBQmJ7ktHC2wrIj+8vWGQEUbRStaxRo9z3nYwXq2uKZ2FB5zraQQejk/19op2we5oQk1up7SJy9TME= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=JQwTxJ7Y; arc=none smtp.client-ip=209.85.222.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JQwTxJ7Y" Received: by mail-qk1-f173.google.com with SMTP id af79cd13be357-7f77c66f13bso547575085a.0; Tue, 02 Sep 2025 12:04:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756839888; x=1757444688; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9aWjS+2is1TGQFCmxYGFdYaTtn7GFz1aeLXf+Ky4DuQ=; b=JQwTxJ7Y4pt4behS5AGvANMBwUvpMkCMvvVmIlMCWERQZ6Z78doKWT6EgPX94ma7u+ VswBwGuFAQgflbVKNUfOnah7qCXxE1HFGTf1BovqsXO7ywQIFEAaQ//3rbeEBCkAhQjZ MD6DLQfQxRWJAVKFi/OQSc3qwVgkaR4JTvrOWRIEY3eRGA8HCgON6JD5Sh5Rks875hDs yih8eApRVD0v7ycP5P/ksAbCu8j95I+rdDIJuT1ps4ZHF5X318ZWTb2CnxQ/F06O4tpE RJPzwGCp6nYJvxu/iRWmIAtG/lTKpNhpjIbram8e8OW3elbDh0PhQDyJk1LT/+nuMT+a tHEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756839888; x=1757444688; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9aWjS+2is1TGQFCmxYGFdYaTtn7GFz1aeLXf+Ky4DuQ=; b=MXICF2h75Sj223Gwe7p377ZOpl/6Bv2b56aTfFz/1agbwc/gzKIfJN78btTzCkLxch dAskddNwVcyAz4mZCDXu6dplmxpdAJftQ0mS4SqpZ3ZuKUgJ/Dbb3CuOxsRfo2rgotbH PIjQL2EPVhhvxsonG5xSatgd7+vA34VnAzYs1lkXgsSa2ldpnYgxlUH1+6swsKo7OBjF Mys4dZo8yDzjWMcRzo7oNfv5ifqQga9J3dQAfOXBZ2jFIWUuCcPyAwMVN0DG9cLqvmD7 ZJJF1Oud17AEzE2MjhkTxoYLW3PgUdcCr0mxBc+gQi2E1WX5R9N4ZAQ92vslSkub+wKZ zREw== X-Forwarded-Encrypted: i=1; AJvYcCW0MVA9agYw6iqKZjTmVPVcWTn+lnVGwxWeszwm3qEqyNNo8xDY3h+FQbO7Zu2R5+QNEm5UX/NthCqNUIsP@vger.kernel.org, AJvYcCW75eHUIsGagvSVFCINxW5CrkrWuGy8L1Cv/NWuTghXY7dvAFNVroJA+5rmBAd967e7PNYVvLU8+B0S@vger.kernel.org X-Gm-Message-State: AOJu0YwE30818FImDk4KBG0XXqqhni5GrP62aA+i6Yl8Y5jZ0uETYb1T mwjv4tXt9vkkQDMBr6klEysuARpd3jQMiwCVW2QPy8qQIjJ7FUurUjFd X-Gm-Gg: ASbGncu/TxL+HhMooEkDMqJGtO0yAbBtretUuEOg9Hu5L853OFY0Y1GWSoKD54unoej tBWDksjxVD7FoBvNNK15m2XGGr5MJSvM5vZ/mADP5mdAQ2OrPjAqJ2bN8GKq2flXV4mJoCuGb0w m2lx3mCUXh/2LDwIULWhSjRvoCgZKYwc7Ukv6nGE66sd+dI86dcqOJCUrycO96yQ4g/d0/ZDOQY aE/wyUQlFALa+/SwPJmbn384Pu72qcr8klULzpYS3yTGz3oiplGRg7zV7zFwOo/z0u5mzMUy2xv OH2poFlPQAnFnB5CJx68yjGv43bCTRqTykKtE6Uh+JffBKUtIBpdQ0agRz0nzAU7HP37jwKI2hG xTZC+ZlWgHV8qD9t6uYRTdLgJfEvuArHkIaEDB5rLVvGAg95wRFNYcSDel/QWiujWnJsb2SYaU3 HVf4Y= X-Google-Smtp-Source: AGHT+IGjRiWZaSnAvm31amjzpgjmLy6bltMNZNb5a2pgY/k0vBuz03HCyZ0uSKYi3Rc9sh/qpQEBEw== X-Received: by 2002:a05:620a:179e:b0:7fd:50bd:1951 with SMTP id af79cd13be357-7ff26eaabd6mr1386385885a.15.1756839887853; Tue, 02 Sep 2025 12:04:47 -0700 (PDT) Received: from localhost (modemcable197.17-162-184.mc.videotron.ca. [184.162.17.197]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8069cb00ca3sm181576085a.47.2025.09.02.12.04.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Sep 2025 12:04:47 -0700 (PDT) From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Lessard?= To: Wolfram Sang , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org Subject: [PATCH v4 2/2] i2c: core: Use fwnode_for_each_child_node_scoped() Date: Tue, 2 Sep 2025 15:04:40 -0400 Message-ID: <20250902190443.3252-3-jefflessard3@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250902190443.3252-1-jefflessard3@gmail.com> References: <20250902190443.3252-1-jefflessard3@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Replace the manual __free(fwnode_handle) iterator declaration with the new scoped iterator macro for cleaner, less error-prone code. This eliminates the need for explicit iterator variable declaration with the cleanup attribute, making the code more consistent with other scoped iterator usage patterns in the kernel. Reviewed-by: Andy Shevchenko Signed-off-by: Jean-Fran=C3=A7ois Lessard Reviewed-by: Sakari Ailus --- drivers/i2c/i2c-core-slave.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/i2c/i2c-core-slave.c b/drivers/i2c/i2c-core-slave.c index 7ee6b992b..02ca55c22 100644 --- a/drivers/i2c/i2c-core-slave.c +++ b/drivers/i2c/i2c-core-slave.c @@ -112,10 +112,9 @@ bool i2c_detect_slave_mode(struct device *dev) struct fwnode_handle *fwnode =3D dev_fwnode(dev); =20 if (is_of_node(fwnode)) { - struct fwnode_handle *child __free(fwnode_handle) =3D NULL; u32 reg; =20 - fwnode_for_each_child_node(fwnode, child) { + fwnode_for_each_child_node_scoped(fwnode, child) { fwnode_property_read_u32(child, "reg", ®); if (reg & I2C_OWN_SLAVE_ADDRESS) return true; --=20 2.43.0