Messages in this thread | | | Date | Mon, 07 Feb 2011 20:59:14 +0100 | From | castet.matthieu@free ... | Subject | Re: [PATCH] NX protection for kernel data : fix 32 bits S3 suspend |
| |
Thanks for cleaning the patch.
Selon "H. Peter Anvin" <hpa@zytor.com>: > On 02/05/2011 08:46 AM, castet.matthieu@free.fr wrote: > > No, the problem is that the code is braindamaged and don't take into > account reserved areas or have a mechanism for marking the reserved > areas so that kernel_physical_mapping_init can do the right thing... and > then it's hacked around instead of done properly. > > We obviously need to reserve this memory very early in order to make > sure it exists, and init_memory_mapping() -> > kernel_physical_mapping_init() really should be able to deal with that > (for example by walking the list of reserved memory regions and look > which ones of them should have specific protection bits -- not just NX > -- set appropriately.) > > The trampoline unification patch could have made this less broken, but > that code is certainly not ready for .38. > For .39 I hope we could remove most of the RWX rights after init (This means make low memory trampoline NX or !RW). This should be possible on : - 32 bit if wakeup use trampoline_32 [1] that doesn't enable paging in low memory (can be NX) - trampoline_64 need fix to support NX on data section. It tries to read data section before enabling NX. A possible fix is to use its own page table [2]. And the kernel one can be NX.
Matthieu
[1] http://marc.info/?l=linux-acpi&m=129616540303575&w=2
[2] http://marc.info/?l=linux-kernel&m=129590778414274&w=2
| |