Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp181499imm; Tue, 17 Jul 2018 16:36:35 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfwDYcUXqJPyoHc5EcyZkEMB8ByTaYLnutpLLxzs3EP3pXS1NhUZWrohxnBUxebeuMj4wPg X-Received: by 2002:a62:9dcc:: with SMTP id a73-v6mr2621309pfk.249.1531870595285; Tue, 17 Jul 2018 16:36:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531870595; cv=none; d=google.com; s=arc-20160816; b=UzQllaCS573/Db/IulHY1dsrFh/zcFqnmU6FWfisdEVnvDzLnJhedhOJTw1CC8vw41 JCK5y3226xsj0U8hJTLRoCz9AJQancNrBJFLp8jSXR0vcEGGLjV+dreKbcxDbUBxkaNp IqGBkswA60yTVdzglkP6NyxDvXLHGpZNEL/wUf2q6CZeRh3xZmRMdnVvTWbzaeRGcCOy zObLLSUZGKdQqtCMFuJ7QfAYlHSANMnMHhAnIA9t16UjcE/VbetqnVkTJHUBzRfSk19C 5OdEz3Oh8G6y5sASUAltVLHTqneP81wsNCjd0QELAFU0qI9zUYQSrVb3pxrjyyIOe+ZC dnkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=mfPOGdyJtBq+3ZY6rFhTKtI8ruNtI30WOnZ44jlLl3w=; b=P/TxUvl/rQwhgfwYOqG+Oy/cex+k3j1A2A/ekeUUIx1qJbkZBMuILd8A9iwpn4jDN3 lWEDPkf6F3j81Yf4F83Q3lFAcIJcnmP4AbpREV/Eh19emYz/eLr7thsPp/iT6ImEPF/1 nDIrzCYQRLnfhQdvOOTkU/UQt0MG9iODIphUS2gZq9FEVVX7ldrN1kaDEGP6toqHST1C GeckyCpTrYbYpx714YsFA8YNHTXwuVL5ethE7rZ3HzPPrSs4so2DkTlWO97SbXZgRhr6 3Hw+psb6Ttv2itDj7KQ1uyP9wCaCrE8NRCLUi4TPhtN8xf5j1PXctJlq9XzbRYWUMpt9 uElg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 17-v6si2004084pgw.648.2018.07.17.16.36.20; Tue, 17 Jul 2018 16:36:35 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731215AbeGRAKo (ORCPT + 99 others); Tue, 17 Jul 2018 20:10:44 -0400 Received: from mxhk.zte.com.cn ([63.217.80.70]:18002 "EHLO mxhk.zte.com.cn" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729840AbeGRAKo (ORCPT ); Tue, 17 Jul 2018 20:10:44 -0400 Received: from mse01.zte.com.cn (unknown [10.30.3.20]) by Forcepoint Email with ESMTPS id 26173D783E4FD006B3B6; Wed, 18 Jul 2018 07:35:44 +0800 (CST) Received: from notes_smtp.zte.com.cn ([10.30.1.239]) by mse01.zte.com.cn with ESMTP id w6HNZeM0083568; Wed, 18 Jul 2018 07:35:40 +0800 (GMT-8) (envelope-from jiang.biao2@zte.com.cn) Received: from localhost.localdomain ([10.75.10.200]) by szsmtp06.zte.com.cn (Lotus Domino Release 8.5.3FP6) with ESMTP id 2018071807354437-761870 ; Wed, 18 Jul 2018 07:35:44 +0800 From: Jiang Biao To: tglx@linutronix.de, mingo@redhat.com Cc: dave.hansen@linux.intel.com, luto@kernel.org, hpa@zytor.com, x86@kernel.org, albcamus@gmail.com, linux-kernel@vger.kernel.org, zhong.weidong@zte.com.cn, jiang.biao2@zte.com.cn Subject: [PATCH v3 2/2] x86/pti: check the return value of pti_user_pagetable_walk_pmd Date: Wed, 18 Jul 2018 07:29:23 +0800 Message-Id: <1531870163-39088-2-git-send-email-jiang.biao2@zte.com.cn> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1531870163-39088-1-git-send-email-jiang.biao2@zte.com.cn> References: <1531870163-39088-1-git-send-email-jiang.biao2@zte.com.cn> X-MIMETrack: Itemize by SMTP Server on SZSMTP06/server/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2018-07-18 07:35:44, Serialize by Router on notes_smtp/zte_ltd(Release 9.0.1FP7|August 17, 2016) at 2018-07-18 07:35:32, Serialize complete at 2018-07-18 07:35:32 X-MAIL: mse01.zte.com.cn w6HNZeM0083568 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Check the return value of pti_user_pagetable_walk_pmd() to avoid NULL pointer dereference. And add warning for fail allocation. Signed-off-by: Jiang Biao --- arch/x86/mm/pti.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/arch/x86/mm/pti.c b/arch/x86/mm/pti.c index 5c33a16..1342f73 100644 --- a/arch/x86/mm/pti.c +++ b/arch/x86/mm/pti.c @@ -204,7 +204,7 @@ static pmd_t *pti_user_pagetable_walk_pmd(unsigned long address) BUILD_BUG_ON(p4d_large(*p4d) != 0); if (p4d_none(*p4d)) { unsigned long new_pud_page = __get_free_page(gfp); - if (!new_pud_page) + if (WARN_ON(!new_pud_page)) return NULL; set_p4d(p4d, __p4d(_KERNPG_TABLE | __pa(new_pud_page))); @@ -218,7 +218,7 @@ static pmd_t *pti_user_pagetable_walk_pmd(unsigned long address) } if (pud_none(*pud)) { unsigned long new_pmd_page = __get_free_page(gfp); - if (!new_pmd_page) + if (WARN_ON(!new_pmd_page)) return NULL; set_pud(pud, __pud(_KERNPG_TABLE | __pa(new_pmd_page))); @@ -240,9 +240,12 @@ static pmd_t *pti_user_pagetable_walk_pmd(unsigned long address) static __init pte_t *pti_user_pagetable_walk_pte(unsigned long address) { gfp_t gfp = (GFP_KERNEL | __GFP_NOTRACK | __GFP_ZERO); - pmd_t *pmd = pti_user_pagetable_walk_pmd(address); pte_t *pte; + pmd_t *pmd = pti_user_pagetable_walk_pmd(address); + if (!pmd) + return NULL; + /* We can't do anything sensible if we hit a large mapping. */ if (pmd_large(*pmd)) { WARN_ON(1); -- 2.7.4