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
This commit is contained in:
commit
cbaa1576c4
|
@ -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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
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)
|
||||||
}
|
}
|
||||||
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
|
||||||
|
|
Loading…
Reference in New Issue