The patch titled cpu hotplug: fix CPU_UP_CANCEL handling has been added to the -mm tree. Its filename is cpu-hotplug-fix-cpu_up_cancel-handling.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: cpu hotplug: fix CPU_UP_CANCEL handling From: Heiko Carstens <heiko.carstens@xxxxxxxxxx> If a cpu hotplug callback fails on CPU_UP_PREPARE, all callbacks will be called with CPU_UP_CANCELED. A few of these callbacks assume that on CPU_UP_PREPARE a pointer to task has been stored in a percpu array. This assumption is not true if CPU_UP_PREPARE fails and the following calls to kthread_bind() in CPU_UP_CANCELED will cause an addressing exception because of passing a NULL pointer. Signed-off-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Cc: Ashok Raj <ashok.raj@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- kernel/sched.c | 2 ++ kernel/softirq.c | 2 ++ kernel/softlockup.c | 2 ++ kernel/workqueue.c | 2 ++ 4 files changed, 8 insertions(+) diff -puN kernel/sched.c~cpu-hotplug-fix-cpu_up_cancel-handling kernel/sched.c --- a/kernel/sched.c~cpu-hotplug-fix-cpu_up_cancel-handling +++ a/kernel/sched.c @@ -4754,6 +4754,8 @@ static int migration_call(struct notifie break; #ifdef CONFIG_HOTPLUG_CPU case CPU_UP_CANCELED: + if (!cpu_rq(cpu)->migration_thread) + break; /* Unbind it from offline cpu so it can run. Fall thru. */ kthread_bind(cpu_rq(cpu)->migration_thread, any_online_cpu(cpu_online_map)); diff -puN kernel/softirq.c~cpu-hotplug-fix-cpu_up_cancel-handling kernel/softirq.c --- a/kernel/softirq.c~cpu-hotplug-fix-cpu_up_cancel-handling +++ a/kernel/softirq.c @@ -470,6 +470,8 @@ static int cpu_callback(struct notifier_ break; #ifdef CONFIG_HOTPLUG_CPU case CPU_UP_CANCELED: + if (!per_cpu(ksoftirqd, hotcpu)) + break; /* Unbind so it can run. Fall thru. */ kthread_bind(per_cpu(ksoftirqd, hotcpu), any_online_cpu(cpu_online_map)); diff -puN kernel/softlockup.c~cpu-hotplug-fix-cpu_up_cancel-handling kernel/softlockup.c --- a/kernel/softlockup.c~cpu-hotplug-fix-cpu_up_cancel-handling +++ a/kernel/softlockup.c @@ -127,6 +127,8 @@ cpu_callback(struct notifier_block *nfb, break; #ifdef CONFIG_HOTPLUG_CPU case CPU_UP_CANCELED: + if (!per_cpu(watchdog_task, hotcpu)) + break; /* Unbind so it can run. Fall thru. */ kthread_bind(per_cpu(watchdog_task, hotcpu), any_online_cpu(cpu_online_map)); diff -puN kernel/workqueue.c~cpu-hotplug-fix-cpu_up_cancel-handling kernel/workqueue.c --- a/kernel/workqueue.c~cpu-hotplug-fix-cpu_up_cancel-handling +++ a/kernel/workqueue.c @@ -590,6 +590,8 @@ static int workqueue_cpu_callback(struct case CPU_UP_CANCELED: list_for_each_entry(wq, &workqueues, list) { + if (!per_cpu_ptr(wq->cpu_wq, hotcpu)->thread) + continue; /* Unbind so it can run. */ kthread_bind(per_cpu_ptr(wq->cpu_wq, hotcpu)->thread, any_online_cpu(cpu_online_map)); _ Patches currently in -mm which might be from heiko.carstens@xxxxxxxxxx are git-klibc.patch s390-move-var-declarations-behind-ifdef.patch adjust-handle_irr_event-return-type.patch add-__iowrite64_copy-s390-fix.patch kthread-convert-s390machc-from-kernel_thread.patch cpu-hotplug-fix-cpu_up_cancel-handling.patch lock-validator-s390-stacktrace-interface.patch lock-validator-s390-config_frame_pointer-support.patch lock-validator-s390-rwsem-semaphore-changes.patch lock-validator-early_init_irq_lock_type--console_init.patch lock-validator-s390-irqtrace-support.patch lock-validator-__local_bh_enable-_local_bh_enable.patch lock-validator-s390-use-raw_spinlock-in-mcck-handler.patch lock-validator-add-s390-to-supported-options.patch lockdep-avoid-false-positive-illegal-lock-usage-message-in-qeth-driver.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html