Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp1103940ybn; Tue, 24 Sep 2019 14:54:59 -0700 (PDT) X-Google-Smtp-Source: APXvYqxPIdyuzTiD4RkU3UBnJaQcBO15DKNidfxHyeBalUZbuRNnmh7WpEnTfPB9wIBGLRv+n83L X-Received: by 2002:adf:f287:: with SMTP id k7mr5108662wro.206.1569362099139; Tue, 24 Sep 2019 14:54:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569362099; cv=none; d=google.com; s=arc-20160816; b=WzZBM8NGicoAow49juI1/tqE+aR2pv11L5Y400dVgb5DBC8VPDgDOdKrzXS2LZizyu kdPs+FOSwPAzwObda2+zO6vbScq8ahwFAGe13lPLVkJoh0nCubfGd5K7tSJ2iFB04Gv8 Zk2PvhGxsK13BD8VKWGXowTPGPwphsFfxb4tBa/qajrifwyhl+w9TJwnkW5Nd5/LaQ8n 2on3nEoin+5z/eVCXZMiZehvMiUlAOjwmTd+JAZHfPSYVt+G4O35+pCWTvYFKaPv4z+9 /EdJE95thmjo9BlAF38DlElJgXUcYRWa/mVKonrHY1TKCAALrCl/uKdFvQTCPFeDhtwS Bvjg== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=N8ibk3dOl5NxWu23JcKbxXfZoXBwGSVGBIafZAb8pkY=; b=DuDOMsBAjMAVVwmVli42AdDAVFC2jJDlytM24lRZX9cy4npwpam7JXplbMYchUlV/Z 4+TUvOpO4Y31bj7XnMf1Ph9CQmWWCStBwib0Z/uK+YHfanB9zalwm/XJG6rbW1dPHgnx JtqHDtktkPUfkemXQvKMBObbEeaQGk1UTmwKUMGKUS+ZqssOKI73lwfjSujUKKXnS9qf 90Ru5c1RVwnEM0bg93Ist5dksRxkKE/SLxikGXO2iJyygZtCyKLi5gDGOCQ0GikQ2r0Q +doz72HTuzh0VxgOnVMU0oS/50sro+JoCiylIMd3IX9kkrfuaA0yLr53thCxWyA0hoxq aaeg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=uYhiRnwG; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p9si1916019edx.273.2019.09.24.14.54.36; Tue, 24 Sep 2019 14:54:59 -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=uYhiRnwG; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437686AbfIVTdE (ORCPT + 99 others); Sun, 22 Sep 2019 15:33:04 -0400 Received: from mail.kernel.org ([198.145.29.99]:44458 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391209AbfIVSrw (ORCPT ); Sun, 22 Sep 2019 14:47:52 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2C59D21928; Sun, 22 Sep 2019 18:47:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1569178071; bh=YdtB9ERDjqPMpLb1hhSKMnEGtL5LAfOBUuAxVN22O04=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uYhiRnwGN/wE0Gm9Q7hDzjTtoHEnovpVdy3bP2p2xMG6I88ZtGsqDStK1CvRrcxlO FSfuiq02WcbEMwq0MYL1faTG8dQ7A6HSzsvoyrsDH0UDDPO0etktYVDnymiW+aqSUx voEgxbdoEujRCNo6LHREMSPrC0ix44cYAtzgak7o= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Song Liu , Thomas Gleixner , Ingo Molnar , Peter Zijlstra , Sasha Levin Subject: [PATCH AUTOSEL 5.3 144/203] x86/mm/pti: Handle unaligned address gracefully in pti_clone_pagetable() Date: Sun, 22 Sep 2019 14:42:50 -0400 Message-Id: <20190922184350.30563-144-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190922184350.30563-1-sashal@kernel.org> References: <20190922184350.30563-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Song Liu [ Upstream commit 825d0b73cd7526b0bb186798583fae810091cbac ] pti_clone_pmds() assumes that the supplied address is either: - properly PUD/PMD aligned or - the address is actually mapped which means that independently of the mapping level (PUD/PMD/PTE) the next higher mapping exists. If that's not the case the unaligned address can be incremented by PUD or PMD size incorrectly. All callers supply mapped and/or aligned addresses, but for the sake of robustness it's better to handle that case properly and to emit a warning. [ tglx: Rewrote changelog and added WARN_ON_ONCE() ] Signed-off-by: Song Liu Signed-off-by: Thomas Gleixner Reviewed-by: Ingo Molnar Acked-by: Peter Zijlstra (Intel) Link: https://lkml.kernel.org/r/alpine.DEB.2.21.1908282352470.1938@nanos.tec.linutronix.de Signed-off-by: Sasha Levin --- arch/x86/mm/pti.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/pti.c b/arch/x86/mm/pti.c index ba22b50f4eca2..7f2140414440d 100644 --- a/arch/x86/mm/pti.c +++ b/arch/x86/mm/pti.c @@ -330,13 +330,15 @@ pti_clone_pgtable(unsigned long start, unsigned long end, pud = pud_offset(p4d, addr); if (pud_none(*pud)) { - addr += PUD_SIZE; + WARN_ON_ONCE(addr & ~PUD_MASK); + addr = round_up(addr + 1, PUD_SIZE); continue; } pmd = pmd_offset(pud, addr); if (pmd_none(*pmd)) { - addr += PMD_SIZE; + WARN_ON_ONCE(addr & ~PMD_MASK); + addr = round_up(addr + 1, PMD_SIZE); continue; } -- 2.20.1