[PATCH] cpu/hotplug: check the return value of idle_thread_get

Chao Liu posted 1 patch 1 year, 1 month ago
kernel/cpu.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
[PATCH] cpu/hotplug: check the return value of idle_thread_get
Posted by Chao Liu 1 year, 1 month ago
ilde may be ERR_PTR()

Signed-off-by: Chao Liu <liuchao173@huawei.com>
---
 kernel/cpu.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/kernel/cpu.c b/kernel/cpu.c
index d0a9aa0b42e8..8ddf372e8d29 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -590,6 +590,9 @@ static int bringup_cpu(unsigned int cpu)
 	struct task_struct *idle = idle_thread_get(cpu);
 	int ret;
 
+	if (IS_ERR(idle))
+		return PTR_ERR(idle);
+
 	/*
 	 * Reset stale stack state from the last time this CPU was online.
 	 */
@@ -614,7 +617,12 @@ static int bringup_cpu(unsigned int cpu)
 static int finish_cpu(unsigned int cpu)
 {
 	struct task_struct *idle = idle_thread_get(cpu);
-	struct mm_struct *mm = idle->active_mm;
+	struct mm_struct *mm = NULL;
+
+	if (IS_ERR(idle))
+		return PTR_ERR(idle);
+
+	mm = idle->active_mm;
 
 	/*
 	 * idle_task_exit() will have switched to &init_mm, now
-- 
2.23.0
Re: [PATCH] cpu/hotplug: check the return value of idle_thread_get
Posted by Thomas Gleixner 1 year, 11 months ago
On Mon, Mar 27 2023 at 20:37, Chao Liu wrote:
> ilde may be ERR_PTR()

Yes, but if that happens in bringup_cpu() or finish_cpu() it would be a
serious bug and the error pointer dereference would be the least of the
problems.

If the initial check in _cpu_up() failed for a CPU then the above
functions cannot be invoked for that CPU ever.

Thanks,

        tglx