Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp326029pxb; Mon, 16 Aug 2021 06:22:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyLrSQ3gUeaI17Ys647pD7Vz6NETc0JTo9ZFlTaEorh8LaIByygaR8uI3L4WbzNYFrzkg7z X-Received: by 2002:a05:6402:48e:: with SMTP id k14mr20322038edv.212.1629120167154; Mon, 16 Aug 2021 06:22:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629120167; cv=none; d=google.com; s=arc-20160816; b=JWZiE6z9P88Kdz1ytPsg0SE5R8HJbKwvyV9Oz/BmrfYuQmkxhyso7CbSiBXpJj+eQl Hlwg8V89Trm1CqpiyBvZbD4LtOsEbBDu117SDCpivGhJSPdirvn2SE6jRUqkDdkm85sp OUKlgRHxK2dpgvTLtrxUZDpXHlvdiOxcsg/0yLvmmoyZsRxREKZY+XJEYpF7X/EN44Iq VeO4cb2p/mrDgo8otgAXVO3CqldO6zadA2q/eXkx1d6XoSId1/mLUzTdIlwqDa6mpSMM ydoNwxSc/0BfeZnXUycsHHfdIpyWNjFuef5I4WmVAhk2+6SPX1a8M2MlpHL4W9ZDgJJn Rsng== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=LwkC4EHQZxF/OGtZ84XfLDkSUhKin7ADm+X52ifgcUU=; b=q3saUE1lOfgcWsfBJg/6jP6ZMvwuPHV8DRuY2djwhnK+OXsKnGSXfitq0912owsvlk sMv7FGFiXzIFrcErnzyuwfeTEGI9uKJGs9cQJHBlqZzZIwmnR41S3+aKGq4eTdAtJ7ta 3wzsnBUKrQW0VnnN5GBt5INW8VrPL75FIgyQayvM7Dj9AG1HaNrUtmqS0xVa0ngL7V5z TfeBzPDj9MN5EiSlwL9XQM1z2ME3Mijq/kbyRL3ogY+dsWoKUbS19E5ivn4J6LbafMuW xOO/rcEVfqpgqc6y2Vc/oKdMI2keUfgMCopUVmP/jwJa6aOZ6qyAHZOETP4IkmhT2T9f WL7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=sB7XZMmR; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t22si10242836ejt.594.2021.08.16.06.22.23; Mon, 16 Aug 2021 06:22:47 -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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=sB7XZMmR; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237169AbhHPNSo (ORCPT + 99 others); Mon, 16 Aug 2021 09:18:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:35822 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236987AbhHPNKY (ORCPT ); Mon, 16 Aug 2021 09:10:24 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6B207610A1; Mon, 16 Aug 2021 13:09:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1629119393; bh=fMLDZqkSRsTJQwD0+4uaaLXl3q2PGp5Z5JfQBMvf6G0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sB7XZMmRrIytOHo/IReq6oDmPX4B1QLonqFM4ajE6Pe351FouCVk78SSFYlNzxBTu U0lclZt1YgypyruBFd9TKhRleThk2Od/V8FhQ20IGd4Hj3QkDEqYoAk5OSHXrctG8m GK1ME3g3R3S3dHH0zCTRkR77mmTTIpwGx6KcUfjM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Liang Wang , Luis Chamberlain , Palmer Dabbelt , Russell King , Xiaoming Ni , Kefeng Wang , Andrew Morton , Linus Torvalds Subject: [PATCH 5.13 001/151] lib: use PFN_PHYS() in devmem_is_allowed() Date: Mon, 16 Aug 2021 15:00:31 +0200 Message-Id: <20210816125444.130146840@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210816125444.082226187@linuxfoundation.org> References: <20210816125444.082226187@linuxfoundation.org> User-Agent: quilt/0.66 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Liang Wang commit 854f32648b8a5e424d682953b1a9f3b7c3322701 upstream. The physical address may exceed 32 bits on 32-bit systems with more than 32 bits of physcial address. Use PFN_PHYS() in devmem_is_allowed(), or the physical address may overflow and be truncated. We found this bug when mapping a high addresses through devmem tool, when CONFIG_STRICT_DEVMEM is enabled on the ARM with ARM_LPAE and devmem is used to map a high address that is not in the iomem address range, an unexpected error indicating no permission is returned. This bug was initially introduced from v2.6.37, and the function was moved to lib in v5.11. Link: https://lkml.kernel.org/r/20210731025057.78825-1-wangliang101@huawei.com Fixes: 087aaffcdf9c ("ARM: implement CONFIG_STRICT_DEVMEM by disabling access to RAM via /dev/mem") Fixes: 527701eda5f1 ("lib: Add a generic version of devmem_is_allowed()") Signed-off-by: Liang Wang Reviewed-by: Luis Chamberlain Cc: Palmer Dabbelt Cc: Greg Kroah-Hartman Cc: Russell King Cc: Liang Wang Cc: Xiaoming Ni Cc: Kefeng Wang Cc: [2.6.37+] Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- lib/devmem_is_allowed.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/lib/devmem_is_allowed.c +++ b/lib/devmem_is_allowed.c @@ -19,7 +19,7 @@ */ int devmem_is_allowed(unsigned long pfn) { - if (iomem_is_exclusive(pfn << PAGE_SHIFT)) + if (iomem_is_exclusive(PFN_PHYS(pfn))) return 0; if (!page_is_ram(pfn)) return 1;