Messages in this thread | | | Date | Tue, 03 Apr 2012 10:10:42 -0600 | From | Toshi Kani <> | Subject | Re: [PATCH] cpuidle: Fix panic in CPU off-lining with no idle driver |
| |
On 4/3/2012 8:08 AM, Srivatsa S. Bhat wrote: > 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@hp.com> >> Cc: Boris Ostrovsky<boris.ostrovsky@amd.com> >> --- >> 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@linux.vnet.ibm.com> > Tested-by: Srivatsa S. Bhat<srivatsa.bhat@linux.vnet.ibm.com> > > > [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.]
Great! Thanks a lot Srivatsa for reviewing and testing! -Toshi
> Regards, > Srivatsa S. Bhat > IBM Linux Technology Center >
| |