From: Andre Przywara <andre.przywara@arm.com>
To: Yin Li <yin.li@oss.qualcomm.com>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Shanker Donthineni <sdonthineni@nvidia.com>,
Conor Dooley <conor+dt@kernel.org>,
Fenghua Yu <fenghuay@nvidia.com>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Rob Herring <robh@kernel.org>,
Reinette Chatre <reinette.chatre@intel.com>,
Konrad Dybcio <konradybcio@kernel.org>,
James Morse <james.morse@arm.com>,
Ben Horgan <ben.horgan@arm.com>,
Bjorn Andersson <andersson@kernel.org>,
Danilo Krummrich <dakr@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-arm-msm@vger.kernel.org,
ganapatrao.kulkarni@oss.qualcomm.com,
trilok.soni@oss.qualcomm.com, devicetree@vger.kernel.org,
driver-core@lists.linux.dev,
Srivathsa L Rao <srivathsa.rao@oss.qualcomm.com>,
Huang Yiwei <huang.yiwei@oss.qualcomm.com>,
aiqun.yu@oss.qualcomm.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH RFC 05/15] arm_mpam: Fix device_node refcount in DT resource parsing
Date: Wed, 2 Sep 2026 15:29:39 +0200 [thread overview]
Message-ID: <e6d4bb93-66fa-4149-985d-87d895081ea0@arm.com> (raw)
In-Reply-To: <20260811-mpam-resctrl-dt-knp-support-v1-5-ea6397bead59@oss.qualcomm.com>
Hi,
On 8/11/26 15:30, Yin Li wrote:
> When a cache-parented or memory-controller-parented MSC is probed via
> device tree, the parent node was assigned directly to a
> __free(device_node) variable without incrementing its reference count.
> Both the parent and the cache/memory variable are declared with
> __free(device_node), which causes the compiler to automatically insert
> an of_node_put() call for each variable when they go out of scope.
> Since both variables point to the same node but the reference count was
> only incremented once by of_get_parent(), the node ends up being
> released twice, causing a refcount underflow.
Yes, looks about right: there is another assignment to both memory and
cache, they call of_parse_phandle(), which increments the refcount, so
we need to do the same for the direct assignments, to get the free'ing
done consistently.
> Use of_node_get() to take an explicit reference so each __free variable
> holds its own reference.
>
> Signed-off-by: Yin Li <yin.li@oss.qualcomm.com>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
... though this should definitely be squashed into the respective DT
patches. Feel free to do so.
Cheers,
Andre
> ---
> drivers/resctrl/mpam_devices.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c
> index 975ddab771b4..559fa09128b4 100644
> --- a/drivers/resctrl/mpam_devices.c
> +++ b/drivers/resctrl/mpam_devices.c
> @@ -280,7 +280,7 @@ static int mpam_dt_parse_resource(struct mpam_msc *msc, struct device_node *np,
> type = MPAM_CLASS_CACHE;
>
> } else if (of_device_is_compatible(parent, "cache")) {
> - cache = parent;
> + cache = of_node_get(parent);
> type = MPAM_CLASS_CACHE;
> } else if (of_device_is_compatible(np, "arm,mpam-memory")) {
> memory = of_parse_phandle(np, "arm,mpam-device", 0);
> @@ -290,7 +290,7 @@ static int mpam_dt_parse_resource(struct mpam_msc *msc, struct device_node *np,
> }
> type = MPAM_CLASS_MEMORY;
> } else if (of_device_is_compatible(np, "arm,mpam-memory-controller-msc")) {
> - memory = parent;
> + memory = of_node_get(parent);
> type = MPAM_CLASS_MEMORY;
> } else {
> /*
>
next prev parent reply other threads:[~2026-09-02 13:29 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-11 13:30 [PATCH RFC 00/15] arm-mpam: Add basic device tree support for resctrl Yin Li
2026-08-11 13:30 ` [PATCH RFC 01/15] dt-bindings: arm: Add MPAM MSC binding Yin Li
2026-09-03 10:03 ` Ben Horgan
2026-08-11 13:30 ` [PATCH RFC 02/15] cacheinfo: Expose the code to generate a cache-id from a device_node Yin Li
2026-08-25 19:11 ` Drew Fustini
2026-08-31 5:43 ` Yin Li
2026-08-11 13:30 ` [PATCH RFC 03/15] arm_mpam: Add device tree support for MSC probing Yin Li
2026-08-11 13:30 ` [PATCH RFC 04/15] arm_mpam: Add support for memory controller MSC on DT platforms Yin Li
2026-08-11 13:30 ` [PATCH RFC 05/15] arm_mpam: Fix device_node refcount in DT resource parsing Yin Li
2026-09-02 13:29 ` Andre Przywara [this message]
2026-09-03 8:07 ` Yin Li
2026-08-11 13:30 ` [PATCH RFC 06/15] arm_mpam: Fix cache ID sentinel from ~0UL to U32_MAX to match u32 return type Yin Li
2026-09-02 13:49 ` Andre Przywara
2026-09-04 3:27 ` Yin Li
2026-08-11 13:30 ` [PATCH RFC 07/15] arm_mpam: Fix the RIS index range check in mpam_ris_create_locked Yin Li
2026-09-02 14:50 ` Andre Przywara
2026-09-03 8:18 ` Yin Li
2026-08-11 13:30 ` [PATCH RFC 08/15] arm_mpam: Fix ris_idx type to prevent range check bypass on truncation Yin Li
2026-09-02 16:22 ` Andre Przywara
2026-09-03 9:42 ` Yin Li
2026-09-03 13:27 ` Andre Przywara
2026-09-04 2:42 ` Yin Li
2026-08-11 13:30 ` [PATCH RFC 09/15] arm_mpam: Fix MSC MMIO window size to use resource_size() instead of end - start Yin Li
2026-09-02 13:16 ` Andre Przywara
2026-09-03 9:45 ` Yin Li
2026-09-03 10:20 ` Ben Horgan
2026-09-03 13:23 ` Ben Horgan
2026-09-04 3:12 ` Yin Li
[not found] ` <8e418149-bde1-46a8-bc82-6baeceb8b1a1@oss.qualcomm.com>
2026-09-09 9:25 ` Yin Li
2026-09-09 10:11 ` Ben Horgan
2026-09-09 10:28 ` Yin Li
2026-08-11 13:30 ` [PATCH RFC 10/15] arm_mpam: Fix update_msc_accessibility() return type to void Yin Li
2026-08-11 13:30 ` [PATCH RFC 11/15] arm_mpam: Fix mpam_dt_create_foundling_msc() to create MSC platform devices Yin Li
2026-08-11 13:30 ` [PATCH RFC 12/15] arm_mpam: Fix get_cpumask_from_cache() to clear mask on error Yin Li
2026-09-02 16:03 ` Andre Przywara
2026-09-03 9:59 ` Yin Li
2026-08-11 13:30 ` [PATCH RFC 13/15] dt-bindings: arm: Fix MPAM MSC binding schema and examples Yin Li
2026-08-11 13:30 ` [PATCH RFC 14/15] arm_mpam: Support MSC accessibility derivation from RIS nodes Yin Li
2026-08-11 13:30 ` [PATCH DNM RFC 15/15] arm64: dts: qcom: kaanapali: Add MPAM MSC nodes for the L2 caches Yin Li
2026-08-25 8:27 ` [PATCH RFC 00/15] arm-mpam: Add basic device tree support for resctrl Yin Li
2026-09-03 10:11 ` Ben Horgan
2026-09-04 2:52 ` Yin Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e6d4bb93-66fa-4149-985d-87d895081ea0@arm.com \
--to=andre.przywara@arm.com \
--cc=aiqun.yu@oss.qualcomm.com \
--cc=andersson@kernel.org \
--cc=ben.horgan@arm.com \
--cc=conor+dt@kernel.org \
--cc=dakr@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=driver-core@lists.linux.dev \
--cc=fenghuay@nvidia.com \
--cc=ganapatrao.kulkarni@oss.qualcomm.com \
--cc=gregkh@linuxfoundation.org \
--cc=huang.yiwei@oss.qualcomm.com \
--cc=james.morse@arm.com \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=reinette.chatre@intel.com \
--cc=robh@kernel.org \
--cc=sdonthineni@nvidia.com \
--cc=srivathsa.rao@oss.qualcomm.com \
--cc=trilok.soni@oss.qualcomm.com \
--cc=yin.li@oss.qualcomm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.