All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/tsc: Prevent NULL pointer deref in calibrate_delay_is_known()
@ 2016-03-18  7:48 Thomas Gleixner
  2016-03-18 10:17 ` Richard W.M. Jones
  2016-03-18 13:54 ` [tip:x86/urgent] " tip-bot for Thomas Gleixner
  0 siblings, 2 replies; 3+ messages in thread
From: Thomas Gleixner @ 2016-03-18  7:48 UTC (permalink / raw)
  To: Richard W.M. Jones
  Cc: Josh Boyer, x86, Linux-Kernel@Vger. Kernel. Org, Peter Zijlstra

Subject: x86/tsc: Prevent NULL pointer deref in calibrate_delay_is_known()
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 18 Mar 2016 08:35:29 +0100

The topology_core_cpumask is used to find a neighbour cpu in
calibrate_delay_is_known(). It might not be allocated at the first invocation
of that function on the boot cpu, when CONFIG_CPUMASK_OFFSTACK is set.

The mask is allocated later in native_smp_prepare_cpus. As a consequence the
underlying find_next_bit() call dereferences a NULL pointer.

Add a proper check to prevent this.

Reported-by: Richard W.M. Jones <rjones@redhat.com>
Fixes: c25323c07345 "x86/tsc: Use topology functions"
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Josh Boyer <jwboyer@fedoraproject.org>
---
 arch/x86/kernel/tsc.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -1306,11 +1306,15 @@ void __init tsc_init(void)
 unsigned long calibrate_delay_is_known(void)
 {
 	int sibling, cpu = smp_processor_id();
+	struct cpumask *mask = topology_core_cpumask(cpu);
 
 	if (!tsc_disabled && !cpu_has(&cpu_data(cpu), X86_FEATURE_CONSTANT_TSC))
 		return 0;
 
-	sibling = cpumask_any_but(topology_core_cpumask(cpu), cpu);
+	if (!mask)
+		return 0;
+
+	sibling = cpumask_any_but(mask, cpu);
 	if (sibling < nr_cpu_ids)
 		return cpu_data(sibling).loops_per_jiffy;
 	return 0;

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-03-18 13:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-18  7:48 [PATCH] x86/tsc: Prevent NULL pointer deref in calibrate_delay_is_known() Thomas Gleixner
2016-03-18 10:17 ` Richard W.M. Jones
2016-03-18 13:54 ` [tip:x86/urgent] " tip-bot for Thomas Gleixner

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.