This is a note to let you know that I've just added the patch titled kaiser: Set _PAGE_NX only if supported to the 4.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: kaiser-set-_page_nx-only-if-supported.patch and it can be found in the queue-4.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From ytht.net@xxxxxxxxx Sat Jan 13 15:46:36 2018 From: Lepton Wu <ytht.net@xxxxxxxxx> Date: Fri, 12 Jan 2018 13:42:56 -0800 Subject: kaiser: Set _PAGE_NX only if supported To: stable@xxxxxxxxxxxxxxx Cc: gregkh@xxxxxxxxxxxxxxxxxxx, groeck@xxxxxxxxxxxx, hshan@xxxxxxxxxx, Lepton Wu <ytht.net@xxxxxxxxx> Message-ID: <20180112214256.257463-1-ytht.net@xxxxxxxxx> From: Lepton Wu <ytht.net@xxxxxxxxx> This finally resolve crash if loaded under qemu + haxm. Haitao Shan pointed out that the reason of that crash is that NX bit get set for page tables. It seems we missed checking if _PAGE_NX is supported in kaiser_add_user_map Link: https://www.spinics.net/lists/kernel/msg2689835.html Reviewed-by: Guenter Roeck <groeck@xxxxxxxxxxxx> Signed-off-by: Lepton Wu <ytht.net@xxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- arch/x86/mm/kaiser.c | 2 ++ 1 file changed, 2 insertions(+) --- a/arch/x86/mm/kaiser.c +++ b/arch/x86/mm/kaiser.c @@ -198,6 +198,8 @@ static int kaiser_add_user_map(const voi * requires that not to be #defined to 0): so mask it off here. */ flags &= ~_PAGE_GLOBAL; + if (!(__supported_pte_mask & _PAGE_NX)) + flags &= ~_PAGE_NX; for (; address < end_addr; address += PAGE_SIZE) { target_address = get_pa_from_mapping(address); Patches currently in stable-queue which might be from ytht.net@xxxxxxxxx are queue-4.4/kaiser-set-_page_nx-only-if-supported.patch