FAILED: patch "[PATCH] cpuidle: riscv-sbi: Use scoped device node handling to fix" failed to apply to 6.1-stable tree
[email protected]
maintainerThe patch below does not apply to the 6.1-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]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkout FETCH_HEAD
git cherry-pick -x a309320ddbac6b1583224fcb6bacd424bcf8637f
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024100154-maternity-snowfield-cbf4@gregkh' --subject-prefix 'PATCH 6.1.y' HEAD^..
Possible dependencies:
a309320ddbac ("cpuidle: riscv-sbi: Use scoped device node handling to fix missing of_node_put") 24760e43c6a6 ("cpuidle: Adjust includes to remove of_device.h")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From a309320ddbac6b1583224fcb6bacd424bcf8637f Mon Sep 17 00:00:00 2001
From: Krzysztof Kozlowski <[email protected]>
Date: Tue, 20 Aug 2024 11:40:22 +0200
Subject: [PATCH] cpuidle: riscv-sbi: Use scoped device node handling to fix
missing of_node_put
Two return statements in sbi_cpuidle_dt_init_states() did not drop the OF node reference count. Solve the issue and simplify entire error handling with scoped/cleanup.h.
drivers/cpuidle/cpuidle-riscv-sbi.c +7 -14
@@ -8,6 +8,7 @@#define pr_fmt (fmt) "cpuidle-riscv-sbi: " fmt +#include <linux/cleanup.h> #include <linux/cpuhotplug.h> #include <linux/cpuidle.h> #include <linux/cpumask.h>
@@ -236,19 +237,16 @@ static int sbi_cpuidle_dt_init_states(struct device *dev, {struct sbi_cpuidle_data *data =per_cpu_ptr (&sbi_cpuidle_data, cpu);struct device_node *state_node; -struct device_node *cpu_node;u32 *states;int i, ret; - cpu_node =of_cpu_device_node_get (cpu); + struct device_node *cpu_node __free(device_node) = of_cpu_device_node_get(cpu);if (!cpu_node)return -ENODEV ; states =devm_kcalloc (dev, state_count,sizeof (*states),GFP_KERNEL ); -if (!states) { - ret = -ENOMEM ; - goto fail; - } +if (!states) +return -ENOMEM ;/* Parse SBI specific details from state DT nodes */ for (i =1 ; i < state_count; i++) {
@@ -264,10 +262,8 @@ static int sbi_cpuidle_dt_init_states(struct device *dev,pr_debug ("sbi-state %#x index %d\n" , states[i], i); } -if (i != state_count) { - ret = -ENODEV ; - goto fail; - } +if (i != state_count) +return -ENODEV ;/* Initialize optional data, used for the hierarchical topology. */ ret =sbi_dt_cpu_init_topology (drv, data, state_count, cpu);
@@ -277,10 +273,7 @@ static int sbi_cpuidle_dt_init_states(struct device *dev,/* Store states in the per-cpu struct. */ data->states = states; -fail: -of_node_put (cpu_node); - -return ret; +return 0 ; }static void sbi_cpuidle_deinit_cpu (int cpu)