FAILED: Patch "mfd: core: Add locking around 'mfd_of_node_list'" failed to apply to 6.12-stable tree
Subsystems (2)
Sasha Levin
maintainerThe patch below does not apply to the 6.12-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Thanks,
Sasha
------------------ original commit in Linus's tree ------------------
From 20117c92bcf9c11afd64d7481d8f94fdf410726e Mon Sep 17 00:00:00 2001
From: Douglas Anderson <[email protected]>
Date: Wed, 10 Dec 2025 11:30:03 -0800
Subject: [PATCH] mfd: core: Add locking around 'mfd_of_node_list'
Manipulating a list in the kernel isn't safe without some sort of mutual exclusion. Add a mutex any time we access / modify 'mfd_of_node_list' to prevent possible crashes.
--- drivers/mfd/mfd-core.c | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-)
drivers/mfd/mfd-core.c +22 -14
@@ -22,6 +22,7 @@#include <linux/regulator/consumer.h> static LIST_HEAD (mfd_of_node_list); +static DEFINE_MUTEX (mfd_of_node_mutex);struct mfd_of_node_entry {struct list_head list;
@@ -104,9 +105,11 @@ static int mfd_match_of_node_to_dev(struct platform_device *pdev,u64 of_node_addr;/* Skip if OF node has previously been allocated to a device */ -list_for_each_entry (of_entry, &mfd_of_node_list, list) -if (of_entry->np == np) -return -EAGAIN ; + scoped_guard(mutex, &mfd_of_node_mutex) { +list_for_each_entry (of_entry, &mfd_of_node_list, list) +if (of_entry->np == np) +return -EAGAIN ; + }if (!cell->use_of_reg)/* No of_reg defined - allocate first free compatible match */
@@ -128,7 +131,8 @@ static int mfd_match_of_node_to_dev(struct platform_device *pdev, of_entry->dev = &pdev->dev; of_entry->np = np; -list_add_tail (&of_entry->list, &mfd_of_node_list); + scoped_guard(mutex, &mfd_of_node_mutex) +list_add_tail (&of_entry->list, &mfd_of_node_list);of_node_get (np);device_set_node (&pdev->dev,of_fwnode_handle (np));
@@ -284,11 +288,13 @@ static int mfd_add_device(struct device *parent, int id,if (cell->swnode)device_remove_software_node (&pdev->dev); fail_of_entry: -list_for_each_entry_safe (of_entry, tmp, &mfd_of_node_list, list) -if (of_entry->dev == &pdev->dev) { -list_del (&of_entry->list); -kfree (of_entry); - } + scoped_guard(mutex, &mfd_of_node_mutex) { +list_for_each_entry_safe (of_entry, tmp, &mfd_of_node_list, list) +if (of_entry->dev == &pdev->dev) { +list_del (&of_entry->list); +kfree (of_entry); + } + } fail_alias: regulator_bulk_unregister_supply_alias(&pdev->dev, cell->parent_supplies,
@@ -358,11 +364,13 @@ static int mfd_remove_devices_fn(struct device *dev, void *data)if (cell->swnode)device_remove_software_node (&pdev->dev); -list_for_each_entry_safe (of_entry, tmp, &mfd_of_node_list, list) -if (of_entry->dev == &pdev->dev) { -list_del (&of_entry->list); -kfree (of_entry); - } + scoped_guard(mutex, &mfd_of_node_mutex) { +list_for_each_entry_safe (of_entry, tmp, &mfd_of_node_list, list) +if (of_entry->dev == &pdev->dev) { +list_del (&of_entry->list); +kfree (of_entry); + } + }regulator_bulk_unregister_supply_alias (dev, cell->parent_supplies, cell->num_parent_supplies);
Signature · 1 line
2.51.0
Sasha,
Quoted 9 lines · Sasha Levin
The patch below does not apply to the 6.12-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.Thanks,
Sasha
Quoted 6 lines
------------------ original commit in Linus's tree ------------------
From
20117c92bcf9c11afd64d7481d8f94fdf410726eMon Sep 17 00:00:00 2001
From: Douglas Anderson <[email protected]>
Date: Wed, 10 Dec 2025 11:30:03 -0800
Subject: [PATCH] mfd: core: Add locking around 'mfd_of_node_list'
Can you give any more details? I tried:
git checkout v6.12.74
git cherry-pick 20117c92bcf9 # ("mfd: core: Add locking around 'mfd_of_node_list'")
It seems to apply all the way back to 6.1 cleanly. NOTE: I didn't try building with those older kernels. I can try if need be.
-Doug
Hi,
Quoted 22 lines · Doug Anderson
Sasha,
Quoted 9 lines · Sasha Levin
The patch below does not apply to the 6.12-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.Thanks,
SashaQuoted 6 lines
------------------ original commit in Linus's tree ------------------
From
20117c92bcf9c11afd64d7481d8f94fdf410726eMon Sep 17 00:00:00 2001
From: Douglas Anderson <[email protected]>
Date: Wed, 10 Dec 2025 11:30:03 -0800
Subject: [PATCH] mfd: core: Add locking around 'mfd_of_node_list'Can you give any more details? I tried:
Quoted 8 lines
git checkout v6.12.74
git cherry-pick20117c92bcf9# ("mfd: core: Add locking around 'mfd_of_node_list'")It seems to apply all the way back to 6.1 cleanly. NOTE: I didn't try building with those older kernels. I can try if need be.
-Doug
FWIW, I checked and v6.12.76 has the patch. So does the top of the 6.6 and 6.1 stable trees. So I guess this was a false positive report? ...or maybe you tried to apply it twice?
If someone wants this on 5.15, I think it's as easy as picking up commit 8e88c61d6f34 ("mfd: core: Delete corresponding OF node entries from list on MFD removal") as a stable dep.
If someone wants this on 5.10, we might need some extra backporting... If someone is truly interested, let me know.
-Doug
Sasha Levin
maintainerQuoted 29 lines · Doug Anderson
Hi,
Quoted 26 lines · Doug Anderson
Sasha,
Quoted 9 lines · Sasha Levin
The patch below does not apply to the 6.12-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.Thanks,
SashaQuoted 6 lines
------------------ original commit in Linus's tree ------------------
From
20117c92bcf9c11afd64d7481d8f94fdf410726eMon Sep 17 00:00:00 2001
From: Douglas Anderson <[email protected]>
Date: Wed, 10 Dec 2025 11:30:03 -0800
Subject: [PATCH] mfd: core: Add locking around 'mfd_of_node_list'Can you give any more details? I tried:
git checkout v6.12.74
git cherry-pick20117c92bcf9# ("mfd: core: Add locking around 'mfd_of_node_list'")
Quoted 8 lines
Quoted 4 lines
It seems to apply all the way back to 6.1 cleanly. NOTE: I didn't try building with those older kernels. I can try if need be.
-Doug
FWIW, I checked and v6.12.76 has the patch. So does the top of the 6.6 and 6.1 stable trees. So I guess this was a false positive report? ...or maybe you tried to apply it twice?
Nope, it was an issue with scripts on my end. Nothing needed for those trees :)
Signature · 2 lines
Thanks, Sasha