Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp13329681ybl; Sun, 29 Dec 2019 09:26:19 -0800 (PST) X-Google-Smtp-Source: APXvYqzkiu3k55oGbXL15lSLbEm8f7Rd4zL0NPFR6+x3IzPVU6IfrFyBPtq1LjYUSyPP9YJnF3tr X-Received: by 2002:a9d:3b09:: with SMTP id z9mr70211556otb.195.1577640379892; Sun, 29 Dec 2019 09:26:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577640379; cv=none; d=google.com; s=arc-20160816; b=RPPXn/8wFvM1iMXOUrezJNOSI8cvqZdkkaWcXLsJNtG/KA1rql1QOXka0ibDgziqF6 PQDYUofkPYWd1aaCSfO2iLeaoQKpfoDctdzNV7rt9QVRanisuDqeM9GE8s3mMRs2fJq7 5vdEpzvVkBWPCuUDFsK7OVyIxE3wBsUfX11gHS/1ombGup1QkVXzX3b8Hcut73JBc/8z gFCbxwj6/eSP2nqQKSVJtEjazxV4iy2V8on3zcPODdtbQjXl0dSJ9jwmip990zQOVPEO 37MxFDlqg2HptPsXamI3/I9JR14YboaTvN9Nzv0d0Kwlh8oIKWNphq24ikiLih6x7LZt 94zw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=/sl6qaClGDQM2RiVDY8dgD/WLv7Vj4Ybe4K+1/EztD4=; b=teGl8WkN8rf2w6bgn688Hu0cC59fEUZSPC0lGCNAlZpBlPIMppHqFTtnXiFn9gwsLh 9M0L9RVEcvy9tlZMSrVgaNF4nHgmIQ6xCbQILIUjJQIXQuG0toiqjTt9BwsPOQrCHvpc EI/IA4VLC8ho1PMnHveeDVz640UUb//cv7Ef/wVTSEBVyCv/TU+auaiZgdMbGRhwFbRk /YsWkTkkkZdFsHWG4hFILH0q7u4zIhZJSEmmzVWecf7f340WKajNzDFWA6EE9jUvYd1H cd2BnadGewfm+yYwIvcOniSFoJXcOFvcpxJFHdXug1bsRybb+dCGzbROUAYi/Jt31S2U Iwtw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=I+dH+OGD; 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 f190si20283515oig.229.2019.12.29.09.26.09; Sun, 29 Dec 2019 09:26:19 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=default header.b=I+dH+OGD; 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 S1727678AbfL2RYJ (ORCPT + 99 others); Sun, 29 Dec 2019 12:24:09 -0500 Received: from mail.kernel.org ([198.145.29.99]:42436 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727669AbfL2RYG (ORCPT ); Sun, 29 Dec 2019 12:24:06 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 703D9207FF; Sun, 29 Dec 2019 17:24:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1577640245; bh=uZwPzzbuvNPjlTY8CWWbCvfRZt1k+n8EqDzEavAd1II=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=I+dH+OGDelprSKubtFWzuGdH6HVybjUo+Dmg8Jl5ywpioLhRFOmZLMoNfB048vLFh g16b0nERY+p/wolgfOcr0NnmXN9+BqdZ7ghIcnWwh05c09TP145BVU+MQirOHxnk0X +uYYUI6sBEOIOkPdkUNjVIGYJMW7yQ9o1x8qr4ow= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Gerald Schaefer , Vasily Gorbik , Sasha Levin Subject: [PATCH 4.14 077/161] s390/mm: add mm_pxd_folded() checks to pxd_free() Date: Sun, 29 Dec 2019 18:18:45 +0100 Message-Id: <20191229162423.489243395@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191229162355.500086350@linuxfoundation.org> References: <20191229162355.500086350@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Gerald Schaefer [ Upstream commit 2416cefc504ba8ae9b17e3e6b40afc72708f96be ] Unlike pxd_free_tlb(), the pxd_free() functions do not check for folded page tables. This is not an issue so far, as those functions will actually never be called, since no code will reach them when page tables are folded. In order to avoid future issues, and to make the s390 code more similar to other architectures, add mm_pxd_folded() checks, similar to how it is done in pxd_free_tlb(). This was found by testing a patch from from Anshuman Khandual, which is currently discussed on LKML ("mm/debug: Add tests validating architecture page table helpers"). Signed-off-by: Gerald Schaefer Signed-off-by: Vasily Gorbik Signed-off-by: Sasha Levin --- arch/s390/include/asm/pgalloc.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/arch/s390/include/asm/pgalloc.h b/arch/s390/include/asm/pgalloc.h index bbe99cb8219d..11857fea993c 100644 --- a/arch/s390/include/asm/pgalloc.h +++ b/arch/s390/include/asm/pgalloc.h @@ -70,7 +70,12 @@ static inline p4d_t *p4d_alloc_one(struct mm_struct *mm, unsigned long address) crst_table_init(table, _REGION2_ENTRY_EMPTY); return (p4d_t *) table; } -#define p4d_free(mm, p4d) crst_table_free(mm, (unsigned long *) p4d) + +static inline void p4d_free(struct mm_struct *mm, p4d_t *p4d) +{ + if (!mm_p4d_folded(mm)) + crst_table_free(mm, (unsigned long *) p4d); +} static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long address) { @@ -79,7 +84,12 @@ static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long address) crst_table_init(table, _REGION3_ENTRY_EMPTY); return (pud_t *) table; } -#define pud_free(mm, pud) crst_table_free(mm, (unsigned long *) pud) + +static inline void pud_free(struct mm_struct *mm, pud_t *pud) +{ + if (!mm_pud_folded(mm)) + crst_table_free(mm, (unsigned long *) pud); +} static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long vmaddr) { @@ -97,6 +107,8 @@ static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long vmaddr) static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) { + if (mm_pmd_folded(mm)) + return; pgtable_pmd_page_dtor(virt_to_page(pmd)); crst_table_free(mm, (unsigned long *) pmd); } -- 2.20.1