On 04/01/2012 09:07 AM, Toshi Kani wrote: > Fix a NULL pointer dereference panic in cpuidle_play_dead() during > CPU off-lining when no cpuidle driver is registered. A cpuidle > driver may be registered at boot-time based on CPU type. This patch > allows an off-lined CPU to enter HLT-based idle in this condition. > > Signed-off-by: Toshi Kani <toshi.kani@xxxxxx> > Cc: Boris Ostrovsky <boris.ostrovsky@xxxxxxx> > --- > drivers/cpuidle/cpuidle.c | 5 ++++- > 1 files changed, 4 insertions(+), 1 deletions(-) > > diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c > index 87411ce..2f0083a 100644 > --- a/drivers/cpuidle/cpuidle.c > +++ b/drivers/cpuidle/cpuidle.c > @@ -74,7 +74,7 @@ static cpuidle_enter_t cpuidle_enter_ops; > /** > * cpuidle_play_dead - cpu off-lining > * > - * Only returns in case of an error > + * Returns in case of an error or no driver > */ > int cpuidle_play_dead(void) > { > @@ -83,6 +83,9 @@ int cpuidle_play_dead(void) > int i, dead_state = -1; > int power_usage = -1; > > + if (!drv) > + return -ENODEV; > + > /* Find lowest-power state that supports long-term idle */ > for (i = CPUIDLE_DRIVER_STATE_START; i < drv->state_count; i++) { > struct cpuidle_state *s = &drv->states[i]; Reviewed-by: Srivatsa S. Bhat <srivatsa.bhat@xxxxxxxxxxxxxxxxxx> Tested-by: Srivatsa S. Bhat <srivatsa.bhat@xxxxxxxxxxxxxxxxxx> [The machine I tested on did support mwait. So, to disable mwait and ensure that no idle driver is registered, I applied my fix for "idle=" parameters (https://lkml.org/lkml/2012/4/3/158) and then passed idle=halt in the kernel command line. Then the machine crashed during CPU offline. Then I tried your patch and it fixed the issue.] Regards, Srivatsa S. Bhat IBM Linux Technology Center -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html