Commit cbaa1576 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'smp-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull hotplug API fix from Ingo Molnar:
 "Late breaking fix from the v4.9 cycle: fix a hotplug register/
  unregister notifier API asymmetry bug that can cause kernel warnings
  (and worse) with certain Kconfig combinations"

* 'smp-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  hotplug: Make register and unregister notifier API symmetric
parents 92c020d0 777c6e0d
...@@ -93,22 +93,16 @@ extern bool cpuhp_tasks_frozen; ...@@ -93,22 +93,16 @@ extern bool cpuhp_tasks_frozen;
{ .notifier_call = fn, .priority = pri }; \ { .notifier_call = fn, .priority = pri }; \
__register_cpu_notifier(&fn##_nb); \ __register_cpu_notifier(&fn##_nb); \
} }
#else /* #if defined(CONFIG_HOTPLUG_CPU) || !defined(MODULE) */
#define cpu_notifier(fn, pri) do { (void)(fn); } while (0)
#define __cpu_notifier(fn, pri) do { (void)(fn); } while (0)
#endif /* #else #if defined(CONFIG_HOTPLUG_CPU) || !defined(MODULE) */
#ifdef CONFIG_HOTPLUG_CPU
extern int register_cpu_notifier(struct notifier_block *nb); extern int register_cpu_notifier(struct notifier_block *nb);
extern int __register_cpu_notifier(struct notifier_block *nb); extern int __register_cpu_notifier(struct notifier_block *nb);
extern void unregister_cpu_notifier(struct notifier_block *nb); extern void unregister_cpu_notifier(struct notifier_block *nb);
extern void __unregister_cpu_notifier(struct notifier_block *nb); extern void __unregister_cpu_notifier(struct notifier_block *nb);
#else
#ifndef MODULE #else /* #if defined(CONFIG_HOTPLUG_CPU) || !defined(MODULE) */
extern int register_cpu_notifier(struct notifier_block *nb); #define cpu_notifier(fn, pri) do { (void)(fn); } while (0)
extern int __register_cpu_notifier(struct notifier_block *nb); #define __cpu_notifier(fn, pri) do { (void)(fn); } while (0)
#else
static inline int register_cpu_notifier(struct notifier_block *nb) static inline int register_cpu_notifier(struct notifier_block *nb)
{ {
return 0; return 0;
...@@ -118,7 +112,6 @@ static inline int __register_cpu_notifier(struct notifier_block *nb) ...@@ -118,7 +112,6 @@ static inline int __register_cpu_notifier(struct notifier_block *nb)
{ {
return 0; return 0;
} }
#endif
static inline void unregister_cpu_notifier(struct notifier_block *nb) static inline void unregister_cpu_notifier(struct notifier_block *nb)
{ {
......
...@@ -659,7 +659,6 @@ void __init cpuhp_threads_init(void) ...@@ -659,7 +659,6 @@ void __init cpuhp_threads_init(void)
kthread_unpark(this_cpu_read(cpuhp_state.thread)); kthread_unpark(this_cpu_read(cpuhp_state.thread));
} }
#ifdef CONFIG_HOTPLUG_CPU
EXPORT_SYMBOL(register_cpu_notifier); EXPORT_SYMBOL(register_cpu_notifier);
EXPORT_SYMBOL(__register_cpu_notifier); EXPORT_SYMBOL(__register_cpu_notifier);
void unregister_cpu_notifier(struct notifier_block *nb) void unregister_cpu_notifier(struct notifier_block *nb)
...@@ -676,6 +675,7 @@ void __unregister_cpu_notifier(struct notifier_block *nb) ...@@ -676,6 +675,7 @@ void __unregister_cpu_notifier(struct notifier_block *nb)
} }
EXPORT_SYMBOL(__unregister_cpu_notifier); EXPORT_SYMBOL(__unregister_cpu_notifier);
#ifdef CONFIG_HOTPLUG_CPU
/** /**
* clear_tasks_mm_cpumask - Safely clear tasks' mm_cpumask for a CPU * clear_tasks_mm_cpumask - Safely clear tasks' mm_cpumask for a CPU
* @cpu: a CPU id * @cpu: a CPU id
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment