Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp257647pxj; Thu, 10 Jun 2021 21:25:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy15m12EijzFcZWj0AK1bDweXZOsX/3VL9CnwW7iOI+U5S6M1PJ7HHOrVKwSyb255dKSNkC X-Received: by 2002:a17:906:4c8c:: with SMTP id q12mr1731689eju.254.1623385512910; Thu, 10 Jun 2021 21:25:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623385512; cv=none; d=google.com; s=arc-20160816; b=BYgTr7skiOGfaBQFDB+iromYtKxwplSkz88s5Weckg0vwFn33vGZl2sBYkYagaTZnw NNPjtc/P2jBBh7TU3aucFTPaaI28Gyo6qxy6EVIiYfVX4P6Su1rZPfQNE0gmJaXa8deX phWxP+woI+mjL9MDEir8Z0rY/+dOhMU/ogRNukGTmk4ZQP1nrLFWc775M37mGxkmfA5q s9K1c3VbLVj6g65HQypcM91A+LXQRbHCuJISQpqAyYYqIvsY6j5bTS4js2pyiG+OZS3b 98N5wAKv06jmXvFKPupVv5OJrxkzvV4y6o0TOQCU/Cci/1uZcKWutzkhw+GmonIX/3x1 lcHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=s/gln8KFPewbo1bwQXTBITk22MSyNaF6sunWSpXKbdg=; b=NkJWN8d/5mS8Jm8VKEtkraQJddR2u9iEtoYpQYP70qHt2P6r5dzzNDgut9mEtxRlC5 rs4eB6k/A+MctjMetktClW7qQZV6UNvfk+4lGk4ESsOWlNfeKcY/UEebAdSgrzSap7Op ZsbpGOc8Ep8rzVnbGj0IWzoflokLLp8C96cNdrcwkrgCIF6BEf0hxLMZPop51/ls1MvH Lx4ypAXBJ6zeJvRCu9D2d/2JnFchnFrai7AUjTVqMSDYOMuKJCQtVtVmF0rsjMHA8FTY TtXwpihvIE51NNrBClfvRghbGmPhJy1mQuvO1NKutaQ4/hO1Brbti+/u8UBHLQU1GKAf 3Alw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p19si4189532ejn.459.2021.06.10.21.24.35; Thu, 10 Jun 2021 21:25:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230212AbhFKEYt (ORCPT + 99 others); Fri, 11 Jun 2021 00:24:49 -0400 Received: from out30-57.freemail.mail.aliyun.com ([115.124.30.57]:45541 "EHLO out30-57.freemail.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229480AbhFKEYs (ORCPT ); Fri, 11 Jun 2021 00:24:48 -0400 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R211e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e04426;MF=yaohuiwang@linux.alibaba.com;NM=1;PH=DS;RN=10;SR=0;TI=SMTPD_---0Uc0I8O5_1623385368; Received: from localhost(mailfrom:yaohuiwang@linux.alibaba.com fp:SMTPD_---0Uc0I8O5_1623385368) by smtp.aliyun-inc.com(127.0.0.1); Fri, 11 Jun 2021 12:22:48 +0800 From: Yaohui Wang To: dave.hansen@linux.intel.com Cc: luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, linux-kernel@vger.kernel.org, Ben Luo , Yahui Wang Subject: [PATCH v2 1/2] mm: fix the pfn calculation mistake in __ioremap_check_ram Date: Fri, 11 Jun 2021 12:21:46 +0800 Message-Id: <20210611042147.80744-2-yaohuiwang@linux.alibaba.com> X-Mailer: git-send-email 2.24.3 (Apple Git-128) In-Reply-To: <20210611042147.80744-1-yaohuiwang@linux.alibaba.com> References: <20210611042147.80744-1-yaohuiwang@linux.alibaba.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In arch/x86/mm/ioremap.c:__ioremap_check_ram, the original pfn wrapping calculation may cause the pfn range to ignore the very start page, if res->start is not page-aligned, or the very end page, if res->end is not page aligned. So start_pfn should wrap down the res->start address, and end_pfn should wrap up the res->end address. This makes the pfn range completely contain [res->start, res->end] ram range. This check is more strict and is more reasonable. Signed-off-by: Ben Luo Signed-off-by: Yahui Wang --- arch/x86/mm/ioremap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index 9e5ccc56f..79adf0d2d 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c @@ -74,8 +74,8 @@ static unsigned int __ioremap_check_ram(struct resource *res) if ((res->flags & IORESOURCE_SYSTEM_RAM) != IORESOURCE_SYSTEM_RAM) return 0; - start_pfn = (res->start + PAGE_SIZE - 1) >> PAGE_SHIFT; - stop_pfn = (res->end + 1) >> PAGE_SHIFT; + start_pfn = res->start >> PAGE_SHIFT; + stop_pfn = (res->end + PAGE_SIZE) >> PAGE_SHIFT; if (stop_pfn > start_pfn) { for (i = 0; i < (stop_pfn - start_pfn); ++i) if (pfn_valid(start_pfn + i) && -- 2.25.1