Thread (37 messages) flat view 37 messages, 5 authors, 2016-08-11

Re: [Resend][PATCH] x86/power/64: Always create temporary identity mapping correctly

From: Thomas Garnier <hidden>
Date: 2016-08-08 18:05:53
Also in: lkml

On Mon, Aug 8, 2016 at 6:54 AM, Rafael J. Wysocki [off-list ref] wrote:
On Mon, Aug 8, 2016 at 3:40 PM, Borislav Petkov [off-list ref] wrote:
quoted
On Mon, Aug 08, 2016 at 03:31:31PM +0200, Rafael J. Wysocki wrote:
quoted
From: Rafael J. Wysocki <redacted>

The low-level resume-from-hibernation code on x86-64 uses
kernel_ident_mapping_init() to create the temoprary identity mapping,
but that function assumes that the offset between kernel virtual
addresses and physical addresses is aligned on the PGD level.

However, with a randomized identity mapping base, it may be aligned
on the PUD level and if that happens, the temporary identity mapping
created by set_up_temporary_mappings() will not reflect the actual
kernel identity mapping and the image restoration will fail as a
result (leading to a kernel panic most of the time).

To fix this problem, rework kernel_ident_mapping_init() to support
unaligned offsets between KVA and PA up to the PMD level and make
set_up_temporary_mappings() use it as approprtiate.

Reported-by: Thomas Garnier <redacted>
Reported-by: Borislav Petkov <redacted>
quoted
Suggested-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Rafael J. Wysocki <redacted>
Acked-by: Yinghai Lu <yinghai@kernel.org>
---

This is sort of urgent, because hibernation doesn't work with KASLR on x86-64
in 4.8-rc1 AFAICS and this should make them work together again.

Unless anyone sees any problems with it, I'll queue it up for 4.8-rc2.

Thomas, would it be possible to test it with KASLR enabled, please?
I tested it on my setup couple times. Worked well.
quoted
Is that the only patch which needs to be tested? Ontop of which tree?
That should be the only one on top of plain 4.8-rc1.

If it doesn't help, we need more work to do. :-)
quoted
CONFIG_RANDOMIZE_MEMORY blew up s2d on my laptop here so I'll run it
once I have the required info from you :)
Thanks!

Best,
Rafael
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help