[{"id":3673980,"web_url":"http://patchwork.ozlabs.org/comment/3673980/","msgid":"<xoo5ymm44t66hr5ti2apl3u7mmenbic66gi7siiiwxtdgn6bhh@hvfzixit53pf>","list_archive_url":null,"date":"2026-04-07T07:27:19","subject":"Re: [PATCH v5 8/9] driver core: Replace dev->of_node_reused with\n dev_of_node_reused()","submitter":{"id":78905,"url":"http://patchwork.ozlabs.org/api/people/78905/","name":"Manivannan Sadhasivam","email":"mani@kernel.org"},"content":"On Mon, Apr 06, 2026 at 04:23:01PM -0700, Douglas Anderson wrote:\n> In C, bitfields are not necessarily safe to modify from multiple\n> threads without locking. Switch \"of_node_reused\" over to the \"flags\"\n> field so modifications are safe.\n> \n> Cc: Johan Hovold <johan@kernel.org>\n> Acked-by: Mark Brown <broonie@kernel.org>\n> Reviewed-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>\n> Reviewed-by: Danilo Krummrich <dakr@kernel.org>\n> Signed-off-by: Douglas Anderson <dianders@chromium.org>\n\nAcked-by: Manivannan Sadhasivam <mani@kernel.org> # PCI_PWRCTRL\n\n- Mani\n\n> ---\n> Not fixing any known bugs; problem is theoretical and found by code\n> inspection. Change is done somewhat manually and only lightly tested\n> (mostly compile-time tested).\n> \n> (no changes since v4)\n> \n> Changes in v4:\n> - Use accessor functions for flags\n> \n> Changes in v3:\n> - New\n> \n>  drivers/base/core.c                      | 2 +-\n>  drivers/base/pinctrl.c                   | 2 +-\n>  drivers/base/platform.c                  | 2 +-\n>  drivers/net/pcs/pcs-xpcs-plat.c          | 2 +-\n>  drivers/of/device.c                      | 6 +++---\n>  drivers/pci/of.c                         | 2 +-\n>  drivers/pci/pwrctrl/core.c               | 2 +-\n>  drivers/regulator/bq257xx-regulator.c    | 2 +-\n>  drivers/regulator/rk808-regulator.c      | 2 +-\n>  drivers/tty/serial/serial_base_bus.c     | 2 +-\n>  drivers/usb/gadget/udc/aspeed-vhub/dev.c | 2 +-\n>  include/linux/device.h                   | 7 ++++---\n>  12 files changed, 17 insertions(+), 16 deletions(-)\n> \n> diff --git a/drivers/base/core.c b/drivers/base/core.c\n> index 8a83d7c93361..30825bf83234 100644\n> --- a/drivers/base/core.c\n> +++ b/drivers/base/core.c\n> @@ -5283,7 +5283,7 @@ void device_set_of_node_from_dev(struct device *dev, const struct device *dev2)\n>  {\n>  \tof_node_put(dev->of_node);\n>  \tdev->of_node = of_node_get(dev2->of_node);\n> -\tdev->of_node_reused = true;\n> +\tdev_set_of_node_reused(dev);\n>  }\n>  EXPORT_SYMBOL_GPL(device_set_of_node_from_dev);\n>  \n> diff --git a/drivers/base/pinctrl.c b/drivers/base/pinctrl.c\n> index 6e250272c843..0bbc83231234 100644\n> --- a/drivers/base/pinctrl.c\n> +++ b/drivers/base/pinctrl.c\n> @@ -24,7 +24,7 @@ int pinctrl_bind_pins(struct device *dev)\n>  {\n>  \tint ret;\n>  \n> -\tif (dev->of_node_reused)\n> +\tif (dev_of_node_reused(dev))\n>  \t\treturn 0;\n>  \n>  \tdev->pins = devm_kzalloc(dev, sizeof(*(dev->pins)), GFP_KERNEL);\n> diff --git a/drivers/base/platform.c b/drivers/base/platform.c\n> index d44591d52e36..199e6fb25770 100644\n> --- a/drivers/base/platform.c\n> +++ b/drivers/base/platform.c\n> @@ -856,7 +856,7 @@ struct platform_device *platform_device_register_full(\n>  \tpdev->dev.parent = pdevinfo->parent;\n>  \tpdev->dev.fwnode = pdevinfo->fwnode;\n>  \tpdev->dev.of_node = of_node_get(to_of_node(pdev->dev.fwnode));\n> -\tpdev->dev.of_node_reused = pdevinfo->of_node_reused;\n> +\tdev_assign_of_node_reused(&pdev->dev, pdevinfo->of_node_reused);\n>  \n>  \tif (pdevinfo->dma_mask) {\n>  \t\tpdev->platform_dma_mask = pdevinfo->dma_mask;\n> diff --git a/drivers/net/pcs/pcs-xpcs-plat.c b/drivers/net/pcs/pcs-xpcs-plat.c\n> index b8c48f9effbf..f4b1b8246ce9 100644\n> --- a/drivers/net/pcs/pcs-xpcs-plat.c\n> +++ b/drivers/net/pcs/pcs-xpcs-plat.c\n> @@ -349,7 +349,7 @@ static int xpcs_plat_init_dev(struct dw_xpcs_plat *pxpcs)\n>  \t * up later. Make sure DD-core is aware of the OF-node being re-used.\n>  \t */\n>  \tdevice_set_node(&mdiodev->dev, fwnode_handle_get(dev_fwnode(dev)));\n> -\tmdiodev->dev.of_node_reused = true;\n> +\tdev_set_of_node_reused(&mdiodev->dev);\n>  \n>  \t/* Pass the data further so the DW XPCS driver core could use it */\n>  \tmdiodev->dev.platform_data = (void *)device_get_match_data(dev);\n> diff --git a/drivers/of/device.c b/drivers/of/device.c\n> index f7e75e527667..be4e1584e0af 100644\n> --- a/drivers/of/device.c\n> +++ b/drivers/of/device.c\n> @@ -26,7 +26,7 @@\n>  const struct of_device_id *of_match_device(const struct of_device_id *matches,\n>  \t\t\t\t\t   const struct device *dev)\n>  {\n> -\tif (!matches || !dev->of_node || dev->of_node_reused)\n> +\tif (!matches || !dev->of_node || dev_of_node_reused(dev))\n>  \t\treturn NULL;\n>  \treturn of_match_node(matches, dev->of_node);\n>  }\n> @@ -192,7 +192,7 @@ ssize_t of_device_modalias(struct device *dev, char *str, ssize_t len)\n>  {\n>  \tssize_t sl;\n>  \n> -\tif (!dev || !dev->of_node || dev->of_node_reused)\n> +\tif (!dev || !dev->of_node || dev_of_node_reused(dev))\n>  \t\treturn -ENODEV;\n>  \n>  \tsl = of_modalias(dev->of_node, str, len - 2);\n> @@ -254,7 +254,7 @@ int of_device_uevent_modalias(const struct device *dev, struct kobj_uevent_env *\n>  {\n>  \tint sl;\n>  \n> -\tif ((!dev) || (!dev->of_node) || dev->of_node_reused)\n> +\tif ((!dev) || (!dev->of_node) || dev_of_node_reused(dev))\n>  \t\treturn -ENODEV;\n>  \n>  \t/* Devicetree modalias is tricky, we add it in 2 steps */\n> diff --git a/drivers/pci/of.c b/drivers/pci/of.c\n> index 9f8eb5df279e..1f9b669abdb0 100644\n> --- a/drivers/pci/of.c\n> +++ b/drivers/pci/of.c\n> @@ -38,7 +38,7 @@ int pci_set_of_node(struct pci_dev *dev)\n>  \tstruct device *pdev __free(put_device) =\n>  \t\tbus_find_device_by_of_node(&platform_bus_type, node);\n>  \tif (pdev)\n> -\t\tdev->bus->dev.of_node_reused = true;\n> +\t\tdev_set_of_node_reused(&dev->bus->dev);\n>  \n>  \tdevice_set_node(&dev->dev, of_fwnode_handle(no_free_ptr(node)));\n>  \treturn 0;\n> diff --git a/drivers/pci/pwrctrl/core.c b/drivers/pci/pwrctrl/core.c\n> index 7754baed67f2..72963a92362a 100644\n> --- a/drivers/pci/pwrctrl/core.c\n> +++ b/drivers/pci/pwrctrl/core.c\n> @@ -39,7 +39,7 @@ static int pci_pwrctrl_notify(struct notifier_block *nb, unsigned long action,\n>  \t\t * If we got here then the PCI device is the second after the\n>  \t\t * power control platform device. Mark its OF node as reused.\n>  \t\t */\n> -\t\tdev->of_node_reused = true;\n> +\t\tdev_set_of_node_reused(dev);\n>  \t\tbreak;\n>  \t}\n>  \n> diff --git a/drivers/regulator/bq257xx-regulator.c b/drivers/regulator/bq257xx-regulator.c\n> index dab8f1ab4450..40e0f1a7ae81 100644\n> --- a/drivers/regulator/bq257xx-regulator.c\n> +++ b/drivers/regulator/bq257xx-regulator.c\n> @@ -143,7 +143,7 @@ static int bq257xx_regulator_probe(struct platform_device *pdev)\n>  \tstruct regulator_config cfg = {};\n>  \n>  \tpdev->dev.of_node = pdev->dev.parent->of_node;\n> -\tpdev->dev.of_node_reused = true;\n> +\tdev_set_of_node_reused(&pdev->dev);\n>  \n>  \tpdata = devm_kzalloc(&pdev->dev, sizeof(struct bq257xx_reg_data), GFP_KERNEL);\n>  \tif (!pdata)\n> diff --git a/drivers/regulator/rk808-regulator.c b/drivers/regulator/rk808-regulator.c\n> index e66408f23bb6..8297d31cde9f 100644\n> --- a/drivers/regulator/rk808-regulator.c\n> +++ b/drivers/regulator/rk808-regulator.c\n> @@ -2115,7 +2115,7 @@ static int rk808_regulator_probe(struct platform_device *pdev)\n>  \tint ret, i, nregulators;\n>  \n>  \tpdev->dev.of_node = pdev->dev.parent->of_node;\n> -\tpdev->dev.of_node_reused = true;\n> +\tdev_set_of_node_reused(&pdev->dev);\n>  \n>  \tregmap = dev_get_regmap(pdev->dev.parent, NULL);\n>  \tif (!regmap)\n> diff --git a/drivers/tty/serial/serial_base_bus.c b/drivers/tty/serial/serial_base_bus.c\n> index a12935f6b992..5f23284a8778 100644\n> --- a/drivers/tty/serial/serial_base_bus.c\n> +++ b/drivers/tty/serial/serial_base_bus.c\n> @@ -74,7 +74,7 @@ static int serial_base_device_init(struct uart_port *port,\n>  \tdev->parent = parent_dev;\n>  \tdev->bus = &serial_base_bus_type;\n>  \tdev->release = release;\n> -\tdev->of_node_reused = true;\n> +\tdev_set_of_node_reused(dev);\n>  \n>  \tdevice_set_node(dev, fwnode_handle_get(dev_fwnode(parent_dev)));\n>  \n> diff --git a/drivers/usb/gadget/udc/aspeed-vhub/dev.c b/drivers/usb/gadget/udc/aspeed-vhub/dev.c\n> index 2ecd049dacc2..8b9449d16324 100644\n> --- a/drivers/usb/gadget/udc/aspeed-vhub/dev.c\n> +++ b/drivers/usb/gadget/udc/aspeed-vhub/dev.c\n> @@ -593,7 +593,7 @@ int ast_vhub_init_dev(struct ast_vhub *vhub, unsigned int idx)\n>  \t\td->gadget.max_speed = USB_SPEED_HIGH;\n>  \td->gadget.speed = USB_SPEED_UNKNOWN;\n>  \td->gadget.dev.of_node = vhub->pdev->dev.of_node;\n> -\td->gadget.dev.of_node_reused = true;\n> +\tdev_set_of_node_reused(&d->gadget.dev);\n>  \n>  \trc = usb_add_gadget_udc(d->port_dev, &d->gadget);\n>  \tif (rc != 0)\n> diff --git a/include/linux/device.h b/include/linux/device.h\n> index 5b0fb6ad4c72..a79865a212e9 100644\n> --- a/include/linux/device.h\n> +++ b/include/linux/device.h\n> @@ -483,6 +483,8 @@ struct device_physical_location {\n>   *\t\tdriver/bus sync_state() callback.\n>   * @DEV_FLAG_DMA_COHERENT: This particular device is dma coherent, even if the\n>   *\t\tarchitecture supports non-coherent devices.\n> + * @DEV_FLAG_OF_NODE_REUSED: Set if the device-tree node is shared with an\n> + *\t\tancestor device.\n>   */\n>  enum struct_device_flags {\n>  \tDEV_FLAG_READY_TO_PROBE = 0,\n> @@ -492,6 +494,7 @@ enum struct_device_flags {\n>  \tDEV_FLAG_DMA_OPS_BYPASS = 4,\n>  \tDEV_FLAG_STATE_SYNCED = 5,\n>  \tDEV_FLAG_DMA_COHERENT = 6,\n> +\tDEV_FLAG_OF_NODE_REUSED = 7,\n>  \n>  \tDEV_FLAG_COUNT\n>  };\n> @@ -573,8 +576,6 @@ enum struct_device_flags {\n>   *\n>   * @offline_disabled: If set, the device is permanently online.\n>   * @offline:\tSet after successful invocation of bus type's .offline().\n> - * @of_node_reused: Set if the device-tree node is shared with an ancestor\n> - *              device.\n>   * @flags:\tDEV_FLAG_XXX flags. Use atomic bitfield operations to modify.\n>   *\n>   * At the lowest level, every device in a Linux system is represented by an\n> @@ -681,7 +682,6 @@ struct device {\n>  \n>  \tbool\t\t\toffline_disabled:1;\n>  \tbool\t\t\toffline:1;\n> -\tbool\t\t\tof_node_reused:1;\n>  \n>  \tDECLARE_BITMAP(flags, DEV_FLAG_COUNT);\n>  };\n> @@ -715,6 +715,7 @@ __create_dev_flag_accessors(dma_skip_sync, DEV_FLAG_DMA_SKIP_SYNC);\n>  __create_dev_flag_accessors(dma_ops_bypass, DEV_FLAG_DMA_OPS_BYPASS);\n>  __create_dev_flag_accessors(state_synced, DEV_FLAG_STATE_SYNCED);\n>  __create_dev_flag_accessors(dma_coherent, DEV_FLAG_DMA_COHERENT);\n> +__create_dev_flag_accessors(of_node_reused, DEV_FLAG_OF_NODE_REUSED);\n>  \n>  #undef __create_dev_flag_accessors\n>  \n> -- \n> 2.53.0.1213.gd9a14994de-goog\n>","headers":{"Return-Path":"\n <linux-pci+bounces-52003-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=m30OgZ4+;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-52003-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"m30OgZ4+\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fqd8L1lGvz1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 07 Apr 2026 17:28:02 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 44FDA3038A6C\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  7 Apr 2026 07:27:37 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id AD80F39479F;\n\tTue,  7 Apr 2026 07:27:36 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 87F3F3921E7;\n\tTue,  7 Apr 2026 07:27:36 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 9F639C116C6;\n\tTue,  7 Apr 2026 07:27:23 +0000 (UTC)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775546856; cv=none;\n b=Bq9R/r1NbPeTRsCZkqP5/1SxJRc/nh/8ogjxNd9yT2IpYUroSxScmhjJHnXpjJ6+lOS4nwR/9iiOK2MUW2y30oLoibE/Sjz6CDCS7YHaJbIMiQ8eMz1vddDwQ/6T05FlbdauCphItfGhxyiTZFxqlihslsbJjbq8amf8eD4aGo0=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775546856; c=relaxed/simple;\n\tbh=Ke+4cfFIuUyaAYRB85WlhtaSzn9Vsqf7eLubNm2wrC8=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=d0SEjTTTNPneD2ijgza6uz4htZdSOu0bhQ/KnibN6FToo/c5XgbMgvHWcXSqX5jEBmczFoPbmPpAT94Bdr5WG6adW80a0wsm2jjQ78PvPYggnD0jwtCGh/2DcHI/bdQfPCKGGWxJc31UvY+LUk1qkpeNhpaDlxjdGH86c7rd8oM=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=m30OgZ4+; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1775546856;\n\tbh=Ke+4cfFIuUyaAYRB85WlhtaSzn9Vsqf7eLubNm2wrC8=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=m30OgZ4+3p1ReP/oAexgtmU1wpHtdCwMpqLsPQ1M0sfld/z/FFzZXpYDh4e3fybYj\n\t /pxqvDO1Tk2YWl7SwXOzZpmgZPuybaqhOnBhM2OusK35qXxa6nPe47jMcbyPObRx9A\n\t LIBBR24hxE+0GEJyrHG5Mor7C5RciZv0K1Y119quGDDpBWRKWuWFCrZtXtkdQBW4P/\n\t 0NSGF1V4uZmeRTPBIIxtlEIQSD1QF0mJS+7VB4QuEvtYAR4nRExM1YEGb6Y1NIFanM\n\t 5dyrIFv4Z+WGfhdSU+6/pMy8q4brJ4lkLN1g/LKq88orVqzymK08dPIflO6p1CiWaw\n\t stDhRXnwwdSEw==","Date":"Tue, 7 Apr 2026 12:57:19 +0530","From":"Manivannan Sadhasivam <mani@kernel.org>","To":"Douglas Anderson <dianders@chromium.org>","Cc":"Greg Kroah-Hartman <gregkh@linuxfoundation.org>,\n\t\"Rafael J . Wysocki\" <rafael@kernel.org>, Danilo Krummrich <dakr@kernel.org>,\n\tAlan Stern <stern@rowland.harvard.edu>, Alexey Kardashevskiy <aik@ozlabs.ru>,\n\tJohan Hovold <johan@kernel.org>, Eric Dumazet <edumazet@google.com>,\n\tLeon Romanovsky <leon@kernel.org>, Christoph Hellwig <hch@lst.de>,\n\tRobin Murphy <robin.murphy@arm.com>, maz@kernel.org,\n Alexander Lobakin <aleksander.lobakin@intel.com>,\n\tSaravana Kannan <saravanak@kernel.org>, Mark Brown <broonie@kernel.org>,\n alexander.stein@ew.tq-group.com,\n\tandrew@codeconstruct.com.au, andrew@lunn.ch,\n andriy.shevchenko@linux.intel.com,\n\tastewart@tektelic.com, bhelgaas@google.com, brgl@kernel.org,\n davem@davemloft.net,\n\tdevicetree@vger.kernel.org, driver-core@lists.linux.dev,\n hkallweit1@gmail.com,\n\tjirislaby@kernel.org, joel@jms.id.au, kees@kernel.org, kuba@kernel.org,\n\tlgirdwood@gmail.com, linux-arm-kernel@lists.infradead.org,\n\tlinux-aspeed@lists.ozlabs.org, linux-kernel@vger.kernel.org,\n linux-pci@vger.kernel.org,\n\tlinux-serial@vger.kernel.org, linux-usb@vger.kernel.org,\n linux@armlinux.org.uk,\n\tnetdev@vger.kernel.org, pabeni@redhat.com, robh@kernel.org","Subject":"Re: [PATCH v5 8/9] driver core: Replace dev->of_node_reused with\n dev_of_node_reused()","Message-ID":"<xoo5ymm44t66hr5ti2apl3u7mmenbic66gi7siiiwxtdgn6bhh@hvfzixit53pf>","References":"<20260406232444.3117516-1-dianders@chromium.org>\n <20260406162231.v5.8.I806b8636cd3724f6cd1f5e199318ab8694472d90@changeid>","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"\n <20260406162231.v5.8.I806b8636cd3724f6cd1f5e199318ab8694472d90@changeid>"}},{"id":3674016,"web_url":"http://patchwork.ozlabs.org/comment/3674016/","msgid":"<adTJNMhsghRs3qwy@hovoldconsulting.com>","list_archive_url":null,"date":"2026-04-07T09:07:00","subject":"Re: [PATCH v5 8/9] driver core: Replace dev->of_node_reused with\n dev_of_node_reused()","submitter":{"id":64666,"url":"http://patchwork.ozlabs.org/api/people/64666/","name":"Johan Hovold","email":"johan@kernel.org"},"content":"On Mon, Apr 06, 2026 at 04:23:01PM -0700, Doug Anderson wrote:\n> In C, bitfields are not necessarily safe to modify from multiple\n> threads without locking. Switch \"of_node_reused\" over to the \"flags\"\n> field so modifications are safe.\n\nThis flag is only set before registering a device with driver core so\nthere is no issue using the existing bitfield here (with the caveat that\nPCI pwrctrl may have gotten that wrong). I haven't checked the other\nflags, but I assume most of them work the same way.\n\nBut apart from the commit message being misleading, switching to using\natomic ops and accessors for consistency is fine.\n\n> Cc: Johan Hovold <johan@kernel.org>\n> Acked-by: Mark Brown <broonie@kernel.org>\n> Reviewed-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>\n> Reviewed-by: Danilo Krummrich <dakr@kernel.org>\n> Signed-off-by: Douglas Anderson <dianders@chromium.org>\n> ---\n> Not fixing any known bugs; problem is theoretical and found by code\n> inspection. Change is done somewhat manually and only lightly tested\n> (mostly compile-time tested).\n \n> diff --git a/drivers/regulator/bq257xx-regulator.c b/drivers/regulator/bq257xx-regulator.c\n> index dab8f1ab4450..40e0f1a7ae81 100644\n> --- a/drivers/regulator/bq257xx-regulator.c\n> +++ b/drivers/regulator/bq257xx-regulator.c\n> @@ -143,7 +143,7 @@ static int bq257xx_regulator_probe(struct platform_device *pdev)\n>  \tstruct regulator_config cfg = {};\n>  \n>  \tpdev->dev.of_node = pdev->dev.parent->of_node;\n> -\tpdev->dev.of_node_reused = true;\n> +\tdev_set_of_node_reused(&pdev->dev);\n>  \n>  \tpdata = devm_kzalloc(&pdev->dev, sizeof(struct bq257xx_reg_data), GFP_KERNEL);\n>  \tif (!pdata)\n> diff --git a/drivers/regulator/rk808-regulator.c b/drivers/regulator/rk808-regulator.c\n> index e66408f23bb6..8297d31cde9f 100644\n> --- a/drivers/regulator/rk808-regulator.c\n> +++ b/drivers/regulator/rk808-regulator.c\n> @@ -2115,7 +2115,7 @@ static int rk808_regulator_probe(struct platform_device *pdev)\n>  \tint ret, i, nregulators;\n>  \n>  \tpdev->dev.of_node = pdev->dev.parent->of_node;\n> -\tpdev->dev.of_node_reused = true;\n> +\tdev_set_of_node_reused(&pdev->dev);\n>  \n>  \tregmap = dev_get_regmap(pdev->dev.parent, NULL);\n>  \tif (!regmap)\n\nThese two uses are broken currently though and should be using\ndevice_set_of_node_from_dev() so that an extra reference is taken to\nbalance the one dropped by the platform bus code.\n\nI'll send two fixes to Mark, any merge conflict should be trivial to\nfixup.\n\nReviewed-by: Johan Hovold <johan@kernel.org>\n\nJohan","headers":{"Return-Path":"\n <linux-pci+bounces-52014-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=stgpB9oZ;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-52014-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"stgpB9oZ\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fqgLw4xZ8z1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 07 Apr 2026 19:07:20 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 229BA3009CD0\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  7 Apr 2026 09:07:05 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 4CFC339B96E;\n\tTue,  7 Apr 2026 09:07:04 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 26F5538E5D7;\n\tTue,  7 Apr 2026 09:07:03 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id A41DDC116C6;\n\tTue,  7 Apr 2026 09:07:03 +0000 (UTC)","from johan by xi.lan with local (Exim 4.98.2)\n\t(envelope-from <johan@kernel.org>)\n\tid 1wA2Oi-0000000AjGf-2EeN;\n\tTue, 07 Apr 2026 11:07:00 +0200"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775552824; cv=none;\n b=Fjqn5F3tvwdbpjlztTpPGuT06IHr/SKijnLgT5w9K/of2l5+7WHfUT8hj9LxMZMBmxvVbSwBDLoFrcKSGiJ0dH4492GZ01nhs8+FDajWkfnWKOUjdUxG+/NTHI4mo+G7B1NO3T+W7/EQp7NS8geTaDY0P1UhIzUlbro5/6ItaSw=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775552824; c=relaxed/simple;\n\tbh=4NERHreOtOHtxPxrg9hJfCL0sb0Gtcuiwi8WJRXUxIs=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=GFtxhR/QJQxqgQ2dNubztVIMgRaO1lz/GLGxP1nkGZHOW58RH2sCnk5ZZ4cm5Ct4HgZpTnd5hVEUF5Ry1vat0sl3IoB/Kp2zL9j9kI9jpsY59u84CzShyeu1zkgkktC64z1TZ7Ec9Cl0XeL8RVufip268nRANd0iDKFDP89Hcyk=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=stgpB9oZ; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1775552823;\n\tbh=4NERHreOtOHtxPxrg9hJfCL0sb0Gtcuiwi8WJRXUxIs=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=stgpB9oZ+np9GYARlzUA9ZMs/QvN4KIBqwa1qRYDAwyfYPqyHDzuHCzXPSnlyzgtg\n\t EAHXWcSv4E0rrXHIwU/F9B+i1mivT8/hiuEewvUz63bUM7ytEH5SQzK2thj+lYKQTs\n\t o2tisu8aVFvQIZG+/d8iAyn9lfuaOQqIZdUeq7k3DZiLr0hgqrYjSRZ2PwzXfNPDL4\n\t eowKFIJwq3yekc5lX5NoSnG1UiqaPzINQrHDk6adQBuAm9YxWQDDa+YyftbK/zR8JS\n\t kxyiSzhZcnKMojNpglf1PuMqJl8hSj8Ux7HAXRlz/T13loQq/CWQfn1V+eHwkI8KMb\n\t 5kNMKJjzp6Bvg==","Date":"Tue, 7 Apr 2026 11:07:00 +0200","From":"Johan Hovold <johan@kernel.org>","To":"Douglas Anderson <dianders@chromium.org>","Cc":"Greg Kroah-Hartman <gregkh@linuxfoundation.org>,\n\t\"Rafael J . Wysocki\" <rafael@kernel.org>,\n\tDanilo Krummrich <dakr@kernel.org>,\n\tAlan Stern <stern@rowland.harvard.edu>,\n\tAlexey Kardashevskiy <aik@ozlabs.ru>,\n\tEric Dumazet <edumazet@google.com>,\n\tLeon Romanovsky <leon@kernel.org>, Christoph Hellwig <hch@lst.de>,\n\tRobin Murphy <robin.murphy@arm.com>, maz@kernel.org,\n\tAlexander Lobakin <aleksander.lobakin@intel.com>,\n\tSaravana Kannan <saravanak@kernel.org>,\n\tMark Brown <broonie@kernel.org>, alexander.stein@ew.tq-group.com,\n\tandrew@codeconstruct.com.au, andrew@lunn.ch,\n\tandriy.shevchenko@linux.intel.com, astewart@tektelic.com,\n\tbhelgaas@google.com, brgl@kernel.org, davem@davemloft.net,\n\tdevicetree@vger.kernel.org, driver-core@lists.linux.dev,\n\thkallweit1@gmail.com, jirislaby@kernel.org, joel@jms.id.au,\n\tkees@kernel.org, kuba@kernel.org, lgirdwood@gmail.com,\n\tlinux-arm-kernel@lists.infradead.org, linux-aspeed@lists.ozlabs.org,\n\tlinux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,\n\tlinux-serial@vger.kernel.org, linux-usb@vger.kernel.org,\n\tlinux@armlinux.org.uk, mani@kernel.org, netdev@vger.kernel.org,\n\tpabeni@redhat.com, robh@kernel.org","Subject":"Re: [PATCH v5 8/9] driver core: Replace dev->of_node_reused with\n dev_of_node_reused()","Message-ID":"<adTJNMhsghRs3qwy@hovoldconsulting.com>","References":"<20260406232444.3117516-1-dianders@chromium.org>\n <20260406162231.v5.8.I806b8636cd3724f6cd1f5e199318ab8694472d90@changeid>","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"\n <20260406162231.v5.8.I806b8636cd3724f6cd1f5e199318ab8694472d90@changeid>"}},{"id":3677839,"web_url":"http://patchwork.ozlabs.org/comment/3677839/","msgid":"<177629105858.764226.5689083905556313606.robh@kernel.org>","list_archive_url":null,"date":"2026-04-15T22:10:59","subject":"Re: [PATCH v5 8/9] driver core: Replace dev->of_node_reused with\n dev_of_node_reused()","submitter":{"id":62529,"url":"http://patchwork.ozlabs.org/api/people/62529/","name":"Rob Herring (Arm)","email":"robh@kernel.org"},"content":"On Mon, 06 Apr 2026 16:23:01 -0700, Douglas Anderson wrote:\n> In C, bitfields are not necessarily safe to modify from multiple\n> threads without locking. Switch \"of_node_reused\" over to the \"flags\"\n> field so modifications are safe.\n> \n> Cc: Johan Hovold <johan@kernel.org>\n> Acked-by: Mark Brown <broonie@kernel.org>\n> Reviewed-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>\n> Reviewed-by: Danilo Krummrich <dakr@kernel.org>\n> Signed-off-by: Douglas Anderson <dianders@chromium.org>\n> ---\n> Not fixing any known bugs; problem is theoretical and found by code\n> inspection. Change is done somewhat manually and only lightly tested\n> (mostly compile-time tested).\n> \n> (no changes since v4)\n> \n> Changes in v4:\n> - Use accessor functions for flags\n> \n> Changes in v3:\n> - New\n> \n>  drivers/base/core.c                      | 2 +-\n>  drivers/base/pinctrl.c                   | 2 +-\n>  drivers/base/platform.c                  | 2 +-\n>  drivers/net/pcs/pcs-xpcs-plat.c          | 2 +-\n>  drivers/of/device.c                      | 6 +++---\n>  drivers/pci/of.c                         | 2 +-\n>  drivers/pci/pwrctrl/core.c               | 2 +-\n>  drivers/regulator/bq257xx-regulator.c    | 2 +-\n>  drivers/regulator/rk808-regulator.c      | 2 +-\n>  drivers/tty/serial/serial_base_bus.c     | 2 +-\n>  drivers/usb/gadget/udc/aspeed-vhub/dev.c | 2 +-\n>  include/linux/device.h                   | 7 ++++---\n>  12 files changed, 17 insertions(+), 16 deletions(-)\n> \n\nReviewed-by: Rob Herring (Arm) <robh@kernel.org>","headers":{"Return-Path":"\n <linux-pci+bounces-52566-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=p0G82jNv;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-52566-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"p0G82jNv\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fwwVH1HpVz1yG9\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 08:16:55 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 4CC7830A7CBC\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 22:11:05 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 9704E390C86;\n\tWed, 15 Apr 2026 22:11:01 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 5DE4A383C80;\n\tWed, 15 Apr 2026 22:11:01 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id D9759C2BCB3;\n\tWed, 15 Apr 2026 22:11:00 +0000 (UTC)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776291061; cv=none;\n b=lWifzMClCuha/Ksxp7QkaI+6ZEIFkg2TTbkGtYXMxcz7EJFYbOvRW48Wu+IjjCJlodl8Sv9gYE0KQwBgiH0/TfQxblBoAqWgugU8c/EXpKjvQKuF4JXL5mPab9OFlvWkWbe/8CZZxWXG4+JGsIPJlwouxUm8lSqgdJCM8vvTTyE=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776291061; c=relaxed/simple;\n\tbh=4MjkOgWu+H/4IbKFLTcEqaA80AYv/7LFnNzAZ1Q9/eY=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=N6paiYNmS4bZJDFfti1WA+88Hw4SQ933f7rgIvZPzOXueLP98ZlLLKxlyXELeibNyftzDh9tEWYxYO7OBCBJVHtwONAXgvzH0426ypTzuZJI4IjXlXCT4KOPZtjsCtWoXKwWNs5fRZ9aEAvI2KvuQQ4Z2asBU5/utkmPGtwJfVE=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=p0G82jNv; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1776291061;\n\tbh=4MjkOgWu+H/4IbKFLTcEqaA80AYv/7LFnNzAZ1Q9/eY=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=p0G82jNvv+WdUrzCg0FXEUgFE67KoF8lsRoHLR1Eixg/LXzBOmBt72ny96ygZ1Yh7\n\t 5pjtAjRmscQPZ3vzTHEJVK2X3F5iY9VBGqR24yPawyJQ/gAIlyZBVqDlxU6RxtLQOu\n\t GIOuEzZ4IIVyp1JVp1Bd0caHsANeP3Y9FjSY0dKokZFCp73u2B9/2SZh9VaeNP9dKw\n\t bDqy1aSrrHxSChU/DDEkPqQ/9mXmyBZFULTx7CeyP1LoiLkGahr6y7zWTmj5JAf+iF\n\t LSKM2823g0Z3h0jTPv9V+xvD6mu4GBgiebxCOKq/m8zV5ubcEy7dHDB71HDaXfInaG\n\t zk3lxaVX52GYQ==","Date":"Wed, 15 Apr 2026 17:10:59 -0500","From":"\"Rob Herring (Arm)\" <robh@kernel.org>","To":"Douglas Anderson <dianders@chromium.org>","Cc":"astewart@tektelic.com, linux-arm-kernel@lists.infradead.org,\n\tMark Brown <broonie@kernel.org>, bhelgaas@google.com,\n\tmaz@kernel.org, linux@armlinux.org.uk, kees@kernel.org,\n\tAlan Stern <stern@rowland.harvard.edu>,\n\tSaravana Kannan <saravanak@kernel.org>, netdev@vger.kernel.org,\n\tlinux-serial@vger.kernel.org, davem@davemloft.net, andrew@lunn.ch,\n\tGreg Kroah-Hartman <gregkh@linuxfoundation.org>, brgl@kernel.org,\n\tjirislaby@kernel.org, mani@kernel.org,\n\tJohan Hovold <johan@kernel.org>, linux-aspeed@lists.ozlabs.org,\n\tlinux-pci@vger.kernel.org, kuba@kernel.org,\n\tAlexander Lobakin <aleksander.lobakin@intel.com>,\n\tLeon Romanovsky <leon@kernel.org>,\n\tandriy.shevchenko@linux.intel.com,\n\t\"Rafael J . Wysocki\" <rafael@kernel.org>,\n\tAlexey Kardashevskiy <aik@ozlabs.ru>, lgirdwood@gmail.com,\n\tandrew@codeconstruct.com.au, hkallweit1@gmail.com,\n\tlinux-kernel@vger.kernel.org, Danilo Krummrich <dakr@kernel.org>,\n\tEric Dumazet <edumazet@google.com>, linux-usb@vger.kernel.org,\n\talexander.stein@ew.tq-group.com,\n\tRobin Murphy <robin.murphy@arm.com>, pabeni@redhat.com,\n\tdevicetree@vger.kernel.org, driver-core@lists.linux.dev,\n\tjoel@jms.id.au, Christoph Hellwig <hch@lst.de>","Subject":"Re: [PATCH v5 8/9] driver core: Replace dev->of_node_reused with\n dev_of_node_reused()","Message-ID":"<177629105858.764226.5689083905556313606.robh@kernel.org>","References":"<20260406232444.3117516-1-dianders@chromium.org>\n <20260406162231.v5.8.I806b8636cd3724f6cd1f5e199318ab8694472d90@changeid>","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"\n <20260406162231.v5.8.I806b8636cd3724f6cd1f5e199318ab8694472d90@changeid>"}}]