Received: by 2002:a25:b794:0:0:0:0:0 with SMTP id n20csp2764802ybh; Mon, 5 Aug 2019 06:29:49 -0700 (PDT) X-Google-Smtp-Source: APXvYqy+swfW3IMK1hLUrS0XtU9RZ06qqTG4nTCCuN0n0fuOuZmE0qXwvStJKzjYv9ZerXpcrBqm X-Received: by 2002:a63:9249:: with SMTP id s9mr132303400pgn.356.1565011789616; Mon, 05 Aug 2019 06:29:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565011789; cv=none; d=google.com; s=arc-20160816; b=L4IKkMnkil1g4O9MqXgBcWitWlWdBaE6clq2AF4VTo5cle5F0F4GN4UTTsqi2cVyf1 CJgLQzgzJcI+hjqf9MHJE6788q324kjqDz6B1kjspSccJBbAHXoRZeQVCJb/YdfZfu3Z a1razqrg8TcRh0uL5tjynJNvOgpxeG/lgaRJBBxUaaxkVGPEv/PWvGe5WZCCHYG0bHDY Wg7Y9kQ9PABKNy/VB8g3Qr6KtTF+pC4xCXL8it9q76/RrWk/uSYoTj9jzbReOrYDIVpq PhzwUaUqZ/A7TH+mHh4GmJWN3o1DdJ8gDVHv4qcIR07wGxUpBroYpwfKzRLy6FWDo+PV 6dcg== 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=f8A7JuPHfxTT5dytcfXEDpRYg62ExYdu2UamhgxylTI=; b=o8FwvKqmQGGpRYqHQc3D33QQD7HwWYg9gZNaS/MNutHiABtJrQsMduPLa56A6Ta70W bgTZXQoSwKzK2DMetW5ZQGsQ49vTNVPKkSvib7MQPfAPWm9ivUnbhkvHHM9WL/1x3krr vUy1gHQQpVl1SNBBEKFc+6vFRIVIRvuu/2/jAgghtlk85Dw2fMw5YX9r0e6ZlWSZS6U2 Kw9XPqFsYeSlWoWYES1EvdsTyt7sT/xs6cw3XkplZec0uYu8DQCfAMF68eUO4E3/UNRb bbobLx5LR+fFQrRJjSPrOCg9MW2ng1wmLz8JQn8p7gYuyPsgMgwuZHfPGaHaqPHHevPd 0wPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="xyCx/XMI"; 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 u6si6841972pfm.135.2019.08.05.06.29.33; Mon, 05 Aug 2019 06:29:49 -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; dkim=pass header.i=@kernel.org header.s=default header.b="xyCx/XMI"; 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 S1729928AbfHENWX (ORCPT + 99 others); Mon, 5 Aug 2019 09:22:23 -0400 Received: from mail.kernel.org ([198.145.29.99]:58714 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728888AbfHENWU (ORCPT ); Mon, 5 Aug 2019 09:22:20 -0400 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 13CC520657; Mon, 5 Aug 2019 13:22:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1565011339; bh=dW5DkAzkHpksuzWKswpNCfk3LhCBfQVWwPOA114BGVs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xyCx/XMIK2qCNwvQk7NAwL44hHunYP5bOE9E5vjHh7ocPNfnjClw6UymvZcX6Jwyd olqA/QHdgDGSFb3rXVswj59FR71eRqMhhuciqjnstBYhiD8ALOELyMqAxlFdfs1mFa o7SdG/YY47qyrbqPjUATA4S3ZwDnSJ1/IFE75k7I= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Anshuman Khandual , Catalin Marinas , Toshi Kani , Will Deacon , Chintan Pandya , Thomas Gleixner , Andrew Morton , Linus Torvalds , Sasha Levin Subject: [PATCH 5.2 056/131] mm/ioremap: check virtual address alignment while creating huge mappings Date: Mon, 5 Aug 2019 15:02:23 +0200 Message-Id: <20190805124955.183073760@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190805124951.453337465@linuxfoundation.org> References: <20190805124951.453337465@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 [ Upstream commit 6b95ab4218bfa59bc315105127ffe03aef3b5742 ] Virtual address alignment is essential in ensuring correct clearing for all intermediate level pgtable entries and freeing associated pgtable pages. An unaligned address can end up randomly freeing pgtable page that potentially still contains valid mappings. Hence also check it's alignment along with existing phys_addr check. Signed-off-by: Anshuman Khandual Reviewed-by: Catalin Marinas Cc: Toshi Kani Cc: Will Deacon Cc: Chintan Pandya Cc: Thomas Gleixner Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Sasha Levin --- lib/ioremap.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/ioremap.c b/lib/ioremap.c index 063213685563c..a95161d9c883c 100644 --- a/lib/ioremap.c +++ b/lib/ioremap.c @@ -86,6 +86,9 @@ static int ioremap_try_huge_pmd(pmd_t *pmd, unsigned long addr, if ((end - addr) != PMD_SIZE) return 0; + if (!IS_ALIGNED(addr, PMD_SIZE)) + return 0; + if (!IS_ALIGNED(phys_addr, PMD_SIZE)) return 0; @@ -126,6 +129,9 @@ static int ioremap_try_huge_pud(pud_t *pud, unsigned long addr, if ((end - addr) != PUD_SIZE) return 0; + if (!IS_ALIGNED(addr, PUD_SIZE)) + return 0; + if (!IS_ALIGNED(phys_addr, PUD_SIZE)) return 0; @@ -166,6 +172,9 @@ static int ioremap_try_huge_p4d(p4d_t *p4d, unsigned long addr, if ((end - addr) != P4D_SIZE) return 0; + if (!IS_ALIGNED(addr, P4D_SIZE)) + return 0; + if (!IS_ALIGNED(phys_addr, P4D_SIZE)) return 0; -- 2.20.1