Messages in this thread | | | From | "Chen, Yu C" <> | Subject | RE: [PATCH][v10] PM / hibernate: Verify the consistent of e820 memory map by md5 digest | Date | Sun, 25 Sep 2016 03:44:03 +0000 |
| |
Hi, Sorry for late response, I missed the thread in mailbox,
> -----Original Message----- > From: rjwysocki@gmail.com [mailto:rjwysocki@gmail.com] On Behalf Of > Rafael J. Wysocki > Sent: Monday, September 19, 2016 7:46 PM > To: Chen, Yu C > Cc: Linux PM; the arch/x86 maintainers; Linux Kernel Mailing List; Thomas > Gleixner; Ingo Molnar; H. Peter Anvin; Wysocki, Rafael J; Pavel Machek; Lee > Chun-Yi; Borislav Petkov > Subject: Re: [PATCH][v10] PM / hibernate: Verify the consistent of e820 > memory map by md5 digest > > On Fri, Sep 9, 2016 at 2:21 PM, Chen Yu <yu.c.chen@intel.com> wrote: > > On some platforms, there is occasional panic triggered when trying to > > resume from hibernation, a typical panic looks like: > > [cut] > > > @@ -211,10 +292,15 @@ int arch_hibernation_header_save(void *addr, > unsigned int max_size) > > */ > > int arch_hibernation_header_restore(void *addr) { > > + bool e820_mismatch = false; > > The extra local variable can be avoided if you structure the code slightly > differently. > > > struct restore_data_record *rdr = addr; > > > > restore_jump_address = rdr->jump_address; > > jump_address_phys = rdr->jump_address_phys; > > restore_cr3 = rdr->cr3; > > - return (rdr->magic == RESTORE_MAGIC) ? 0 : -EINVAL; > > + > > + e820_mismatch = hibernation_e820_mismatch(rdr->e820_digest); > > Also calling hibernation_e820_mismatch() before checking rdr->magic may not > be useful at all. > Yes. > > + > > + return (rdr->magic == RESTORE_MAGIC) ? > > + (e820_mismatch ? -ENODEV : 0) : -EINVAL; > > So what about: > > if (rdr->magic != RESTORE_MAGIC) > return -EINVAL; > > if (hibernation_e820_mismatch(rdr->e820_digest)) > return -ENODEV; > > return 0; > > Ok, will change it to this one. Thanks. > > } > > -- > > Thanks, > Rafael
Thanks, Yu
| |