Hi, > -----Original Message----- > From: Pavel Machek [mailto:pa...@ucw.cz] > Sent: Sunday, June 26, 2016 12:51 AM > To: Chen, Yu C > Cc: linux...@vger.kernel.org; x...@kernel.org; Rafael J. Wysocki; Len Brown; > Peter Zijlstra; H. Peter Anvin; Borislav Petkov; Brian Gerst; Thomas Gleixner; > Ingo Molnar; Varun Koyyalagunta; linux-kernel@vger.kernel.org > Subject: Re: [PATCH 1/4][RFC v2] PM / sleep: Avoid accessing frozen_cpus if it > is NULL > > On Sun 2016-06-26 00:18:30, Chen Yu wrote: > > frozen_cpus might be NULL if the allocation in previous > > alloc_frozen_cpus failed, when CONFIG_CPUMASK_OFFSTACK is set. > > > > This patch avoid accessing this cpumask if it is NULL. > > > > Signed-off-by: Chen Yu <yu.c.c...@intel.com> > > --- > > kernel/cpu.c | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/kernel/cpu.c b/kernel/cpu.c index d948e44..d25266e 100644 > > --- a/kernel/cpu.c > > +++ b/kernel/cpu.c > > @@ -1021,6 +1021,8 @@ int disable_nonboot_cpus(void) { > > int cpu, first_cpu, error = 0; > > > > + if (frozen_cpus == NULL) > > + return -ENOMEM; > > cpu_maps_update_begin(); > > first_cpu = cpumask_first(cpu_online_mask); > > /* > > I'd say that whoever allocates frozen_cpus should just abort the hibernation > if > there's not enough memory for the operation...? This seems like checking for > the problem too late. > The allocation of frozen_cpus is alloc_frozen_cpus, which is in core_initcall, and do_initcall during boot up seems not to care about the return value from these functions. So I think either we add the check in disable_nonboot_cpus, or we can set noresume = 1 and nohibernate = 1 if alloc_frozen_cpus fails.
thanks, Yu