From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754763AbeDPJoE (ORCPT ); Mon, 16 Apr 2018 05:44:04 -0400 Received: from 8bytes.org ([81.169.241.247]:53162 "EHLO theia.8bytes.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754466AbeDPJoD (ORCPT ); Mon, 16 Apr 2018 05:44:03 -0400 From: Joerg Roedel To: Thomas Gleixner , Ingo Molnar Cc: hpa@zytor.com, Andy Lutomirski , Peter Zijlstra , Borislav Petkov , linux-kernel@vger.kernel.org, Joerg Roedel , Dave Hansen Subject: [PATCH] x86/ldt: Fix support_pte_mask filtering in map_ldt_struct() Date: Mon, 16 Apr 2018 11:43:57 +0200 Message-Id: <1523871837-8378-1-git-send-email-joro@8bytes.org> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Joerg Roedel The |= operator will let us end up with an invalid PTE. Use the correct &= instead. Fixes: fb43d6cb91ef ('x86/mm: Do not auto-massage page protections') Cc: Dave Hansen Signed-off-by: Joerg Roedel --- arch/x86/kernel/ldt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c index d41d896481b8..c9b14020f4dd 100644 --- a/arch/x86/kernel/ldt.c +++ b/arch/x86/kernel/ldt.c @@ -166,7 +166,7 @@ map_ldt_struct(struct mm_struct *mm, struct ldt_struct *ldt, int slot) */ pte_prot = __pgprot(__PAGE_KERNEL_RO & ~_PAGE_GLOBAL); /* Filter out unsuppored __PAGE_KERNEL* bits: */ - pgprot_val(pte_prot) |= __supported_pte_mask; + pgprot_val(pte_prot) &= __supported_pte_mask; pte = pfn_pte(pfn, pte_prot); set_pte_at(mm, va, ptep, pte); pte_unmap_unlock(ptep, ptl); -- 2.13.6