Thread (4 messages) 4 messages, 3 authors, 2016-09-29

RE: linux-next: build failure after merge of the tip tree

From: "Chen, Yu C" <yu.c.chen@intel.com>
Date: 2016-09-29 15:54:37
Also in: lkml

Hi,
-----Original Message-----
From: Rafael J. Wysocki [mailto:rjw@rjwysocki.net]
Sent: Thursday, September 29, 2016 8:25 PM
To: Stephen Rothwell
Cc: Thomas Gleixner; Ingo Molnar; H. Peter Anvin; Peter Zijlstra; linux-
next@vger.kernel.org; linux-kernel@vger.kernel.org; Denys Vlasenko; Chen, Yu
C
Subject: Re: linux-next: build failure after merge of the tip tree

On Thursday, September 29, 2016 01:20:07 PM Stephen Rothwell wrote:
quoted
Hi all,

After merging the tip tree, today's linux-next build (x86_64
allmodconfig) failed like this:

arch/x86/power/hibernate_64.c: In function 'hibernation_e820_save':
arch/x86/power/hibernate_64.c:236:15: error: passing argument 1 of
'get_e820_md5' from incompatible pointer type [-Werror=incompatible-
pointer-types]
quoted
  get_e820_md5(&e820_saved, buf);
               ^
arch/x86/power/hibernate_64.c:203:12: note: expected 'struct e820map *'
but argument is of type 'struct e820map **'
quoted
 static int get_e820_md5(struct e820map *map, void *buf)
            ^
arch/x86/power/hibernate_64.c: In function 'hibernation_e820_mismatch':
arch/x86/power/hibernate_64.c:249:21: error: passing argument 1 of
'get_e820_md5' from incompatible pointer type [-Werror=incompatible-
pointer-types]
quoted
  ret = get_e820_md5(&e820_saved, result);
                     ^
arch/x86/power/hibernate_64.c:203:12: note: expected 'struct e820map *'
but argument is of type 'struct e820map **'
quoted
 static int get_e820_md5(struct e820map *map, void *buf)
            ^

Caused by commit

  475339684ef1 ("x86/e820: Prepare e280 code for switch to dynamic
storage")

interacting with commit

  6f95ad2b6162 ("PM / hibernate: Verify e820 memory map by MD5
digest")

from the pm tree.

I have applied the following merge fix patch:

From: Stephen Rothwell <redacted>
Date: Thu, 29 Sep 2016 13:13:45 +1000
Subject: [PATCH] pm/hibernate: merge fix for type of e820_saved
changing

Signed-off-by: Stephen Rothwell <redacted>
---
 arch/x86/power/hibernate_64.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/power/hibernate_64.c
b/arch/x86/power/hibernate_64.c index 72f2c9531b03..904048f7a9c9
100644
--- a/arch/x86/power/hibernate_64.c
+++ b/arch/x86/power/hibernate_64.c
@@ -233,7 +233,7 @@ static int get_e820_md5(struct e820map *map, void
*buf)

 static void hibernation_e820_save(void *buf)  {
-	get_e820_md5(&e820_saved, buf);
+	get_e820_md5(e820_saved, buf);
 }

 static bool hibernation_e820_mismatch(void *buf) @@ -246,7 +246,7 @@
static bool hibernation_e820_mismatch(void *buf)
 	if (!memcmp(result, buf, MD5_DIGEST_SIZE))
 		return false;

-	ret = get_e820_md5(&e820_saved, result);
+	ret = get_e820_md5(e820_saved, result);
 	if (ret)
 		return true;
Looks good to me, thanks Stephen!

Rafael
Thanks for the fix!

I made a double check of the patch :
"x86/e820: Prepare e280 code for switch to dynamic storage"
It looks like this patch has reallocate the e820 & e820_save to their actual size:
+	size = offsetof(struct e820map, map) + sizeof(struct e820entry) * e820->nr_map;
+	n = kmalloc(size, GFP_KERNEL);

however the previous patch to verify the md5 hash during hibernation will
use the original e820_map structure by sizeof(struct e820map), which might 
read invalid value after the latest patch applied. I think I need to modify the 
hibernation e820 checking patch to only generate  md5 digest based on the actual 
e820_save size by sizeof(struct e820entry) * e820->nr_map.

I don't have a machine in hand now, will test later and give feedback later. Thanks again!
Yu
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help