Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3792910pxk; Tue, 22 Sep 2020 02:43:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwg3HhlNyn/09wQvL1mCK3SPmalG/reX0lvT1DWrDhYKYUfkmTpxV3hKyht2Un0/RW+LjS9 X-Received: by 2002:a17:906:95cf:: with SMTP id n15mr4155186ejy.14.1600767799984; Tue, 22 Sep 2020 02:43:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600767799; cv=none; d=google.com; s=arc-20160816; b=G7eSJROfHD4pqchgA3XoBTZWNfF/Rg9550mGScsPCLPypxKlt2b7Qr2auHH3rE6FIm O19tWgBraUQGVtOhH6KQUNVmYd0wuJIMXiti4YWWJwpcVELu7mpQIxbJSDdLyW2W9X6B de9M6qD18lv0zyM1Q8dS9a6/a9bQy6zvZeDwe/hUAggLys8idBYH69qODYbjSRzQcYG3 eG+Ujwcryvdy3qxaHfzD0djpeAP8X0mv3ZjF7ec76B+pIBnzjS9ZFxrKKdqV2HNR0FAN kleJk4n7kFyY2J6xClQUaVDxVvT61NvY7Gqop2tB72ybP+cbcLOWsacXLZKIvwzU6GaB 3kjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=tMFAqIs0XG/9w+upOfvABoQJkKsVB+oblZBNCoj8AfY=; b=zm4ANR2mVGOVwlX1nNsyzFQEqOA5edUqw5vUlNXq5AVQ7cnJD27gYXEsEKe2N4Zb0L w1cebPlqd4RPSbVX4Wvgz7yBpGnRvX+u9vnMXMoroOHGl7tOTn0QS52mp2twqfRlqTMJ kYTf2sEsaE8w8W0ga3R4UZvQEbgfOx7rx6BJPmtOPNoHRCoCjm4h/XjIa6gAjbyab8vN SL7OoyMwDabN9QqIz6ZBPRYdwLvT7VRpbveq7a/Fw3rdJkVTx6PF8r8ECv8TR3CB6ysv CC8gfOZybPC0LqG0hpR5ormBN1uc2cYcwiMvFF5mooGYznRHhHaEx1RLGJdBlnnYOSD2 ft+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BJ39ovw6; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a9si10204201ejx.166.2020.09.22.02.42.56; Tue, 22 Sep 2020 02:43:19 -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=@kernel.org header.s=default header.b=BJ39ovw6; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726549AbgIVJlt (ORCPT + 99 others); Tue, 22 Sep 2020 05:41:49 -0400 Received: from mail.kernel.org ([198.145.29.99]:42778 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726353AbgIVJlt (ORCPT ); Tue, 22 Sep 2020 05:41:49 -0400 Received: from e123331-lin.nice.arm.com (lfbn-nic-1-188-42.w2-15.abo.wanadoo.fr [2.15.37.42]) (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 BE322239A1; Tue, 22 Sep 2020 09:41:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1600767708; bh=ttUaxpIoiZeqwIvQOhaNFmyYIhNSRt/G+yBAvPlz2is=; h=From:To:Cc:Subject:Date:From; b=BJ39ovw6VE7ZMD0AA2u98IyiuiYME3jBM9sXvoNy8Ft+JWMjZyHcVJwtvmPFPE//W /iK5le6ma37lYtFiGtTrtRTAx1/r1AShY/LYID9q0S/5Fd76/JbiG+jtmNHxPpZ6g5 i7VSqgb94mZiYrIHEvum2OdY3lHxtJiL9rNlW/5s= From: Ard Biesheuvel To: linux-integrity@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Ard Biesheuvel , Peter Huewe , Jarkko Sakkinen , Jason Gunthorpe Subject: [PATCH] tpm: of: avoid __va() translation for event log address Date: Tue, 22 Sep 2020 11:41:28 +0200 Message-Id: <20200922094128.26245-1-ardb@kernel.org> X-Mailer: git-send-email 2.17.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The TPM event log is provided to the OS by the firmware, by loading it into an area in memory and passing the physical address via a node in the device tree. Currently, we use __va() to access the memory via the kernel's linear map: however, it is not guaranteed that the linear map covers this particular address, as we may be running under HIGHMEM on a 32-bit architecture, or running firmware that uses a memory type for the event log that is omitted from the linear map (such as EfiReserved). So instead, use memremap(), which will reuse the linear mapping if it is valid, or create another mapping otherwise. Cc: Peter Huewe Cc: Jarkko Sakkinen Cc: Jason Gunthorpe Signed-off-by: Ard Biesheuvel --- drivers/char/tpm/eventlog/of.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/char/tpm/eventlog/of.c b/drivers/char/tpm/eventlog/of.c index a9ce66d09a75..9178547589a3 100644 --- a/drivers/char/tpm/eventlog/of.c +++ b/drivers/char/tpm/eventlog/of.c @@ -11,6 +11,7 @@ */ #include +#include #include #include @@ -25,6 +26,7 @@ int tpm_read_log_of(struct tpm_chip *chip) struct tpm_bios_log *log; u32 size; u64 base; + void *p; log = &chip->log; if (chip->dev.parent && chip->dev.parent->of_node) @@ -65,7 +67,11 @@ int tpm_read_log_of(struct tpm_chip *chip) return -EIO; } - log->bios_event_log = kmemdup(__va(base), size, GFP_KERNEL); + p = memremap(base, size, MEMREMAP_WB); + if (!p) + return -ENOMEM; + log->bios_event_log = kmemdup(p, size, GFP_KERNEL); + memunmap(p); if (!log->bios_event_log) return -ENOMEM; -- 2.17.1