From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0075A3DAAB8 for ; Mon, 3 Aug 2026 09:24:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785749077; cv=none; b=RY1zpmMJ5IPAdObw4h4K27k8gHFGOjoDKRRwqibyTYlYCW23+s/iJFM21n98RYbebC0c9l7BB8fJc36/2anCnhOKSrSG3UPh7WBDv/A/hOpA4EfwxtNuXLYoGwE8N5iIpqdyVRxGWmOS65sZIHwEuXRJPlR+pBNbZseDNLQRjQw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785749077; c=relaxed/simple; bh=dkU4Tw0yAuLuGOa79nc/r9FpS2/pes1r5ogzZx5MrtY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=ryNVpv9iBzw+wpo4X9TFhEIjBxzgsdN+y0kzoXH52Cw01otraWkyNXPgMijJotEKef/ekKrLXEkUwyyDBEmoXnuNHN0GtfRZzysBZKVk9hDTCyG3wfVY3J5ZCMylhSghwcrOyAL0vaDoHwu/iMm9oy8rfdsIauXamkJ+0wtXdqY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=kiepbW/6; arc=none smtp.client-ip=209.85.128.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="kiepbW/6" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-4954a2dba6cso1709635e9.1 for ; Mon, 03 Aug 2026 02:24:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785749073; x=1786353873; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=V9QHkMFg6ACXXBOTXO2bQNyqADWHuSvYdeuTGK7GMdw=; b=kiepbW/6iz3NKPMDNUbwTXw+hbivgOP2Fqb8LV0vZqrkEblPIjesGaA09gdq9EjlXp WFUSptGaT0ILpKMRG075lY4BmtSZJ87p/gVuwoZEn84tXVPuUqkJ9svVYe52f4ThDQU4 UA304C9v4qkqHBvjsy0naLtIqdbDZTLg8exvgIzgvaSuSnXUnivvJDckjvj3/J/0XUj4 ClwcrQ5CbQ/WbYgM1PfFjGV6U+R3BzQnXCLTLDVh+asZRFS7WhhBdPHEkv0gMRuczdHG XHg5FEksL4w7qvjwXSwXmR9OL8XXqDZRTcMYFbV7UYeDrjOjMnW/ACCzk6g3vn/lUWVg zWYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785749073; x=1786353873; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=V9QHkMFg6ACXXBOTXO2bQNyqADWHuSvYdeuTGK7GMdw=; b=axZaR+DF/fI3L29bwL5IAZUWzbABesVFJ/5LnlfyXdQC4B3SNgRyN+dMKAmhdKtGB7 W/bhjMInHBadruhW7gfpckLhLWQD1SRpSlwzGuARYE+alHBb5LeBUdXlhrb7abwe3hDx NOEg28kHR3Ydtksvzn/W18AAt3nnPj3Izx9BblODQlnJT4dShTOjGg7yLZwix3qT0lEb FmRBYf7EOeSar91vdyGz03HkchI1HDCkSy9uPSJrw/abRnqwzUE+7hLq0jnDIoOMoLrn I/SNeXtxtkSzICoGvQyI5kmHZupvHhyLxwhs6CPJoTTf1VyarnlgtjRIxGWYs8GcKpO5 o3DQ== X-Forwarded-Encrypted: i=1; AHgh+Ro+lr4OGnCEPEibckfaNKX1+3/7po2KU+xBnLLVIOVb8v6Z5hlSyjsE9mBo36btYhZogMc1z2HHnD/xtGw=@vger.kernel.org X-Gm-Message-State: AOJu0YzvVqvfzBdN03CpMdjpUPgQD1kVJ/B5KIqSjhEne+yGzRLA0eSu QNoY8zvY3LvT813uXFsHEBYJ0k+LJSy66N04Z4zswtTBf2gMDrXFqWe7 X-Gm-Gg: AR+sD1263Vnip2hfHRo8hHKVSu2IziYhUmIDFAYLQXjyIvUpBipkXKZqBrH73vNApQm dxwtWnCTlTewEXrJpctKKBdHwD3UFqcQ9h6bvnXakdnpm8THrmCY+U/iFviGaLoSdBNyFVWWuri T1+BsPKz70nTM1/l7zlRT8OFR3SB8saG4wiWP+/bVP7kn+KV7SlTCv0LKJGkCmeL59tOWS8UxZb Ufklg7Ci82/UwCv5NiAUAGy5zCgYJGWTAXe+EnLJb46o3ZlWOdBg/JAXpjRatYSOoAyPGoCLZ8N 3fpCV/LqNM8yQPZ9u3fZ/sUggmJ+tomYsBYyiql3ifvGxlq3budOffuposd1jon6vBdnRqK9tT4 LpL4yefwiQrQ1uWtz+KQIRkoBBqvHiFEy+rwwBHUxiYXhrAvPmG+Sc5Oavrxb57CGayFdku4Jyi Mrffowpyxl+LvnZm5XNmyml9TdwMqYXcrpMrP4Sh9nerNEcqBSKZ1rEWkQ1W2MFjfpnVJ2jfEde b+oI/9Ngra00oCnAUWmisw= X-Received: by 2002:a05:600c:840f:b0:495:4840:c6b with SMTP id 5b1f17b1804b1-4980c656b36mr87800415e9.1.1785749073091; Mon, 03 Aug 2026 02:24:33 -0700 (PDT) Received: from thomas-precision3591.inria.fr ([2a04:cec0:101e:c128:4719:1287:c5e5:152c]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-49807b5b4a2sm250009655e9.1.2026.08.03.02.24.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Aug 2026 02:24:32 -0700 (PDT) From: Thomas Fourier To: Cc: Thomas Fourier , stable@vger.kernel.org, Peter Huewe , Jarkko Sakkinen , Jason Gunthorpe , Jerry Snitselaar , linux-integrity@vger.kernel.org (open list:TPM DEVICE DRIVER), linux-kernel@vger.kernel.org (open list) Subject: [PATCH] tpm: Fix barriers to prevent hwrng from activating during resume Date: Mon, 3 Aug 2026 11:13:24 +0200 Message-ID: <20260803092240.18348-2-fourier.thomas@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The memory barrier is placed after clearing the suspened flag so memory reordering between the wake up and clearing the flag is allowed. The reader of the flag is missing the corresponding barrier. Clear the flag after the memory barrier and add a memory barrier in the reader. Fixes: 99d464506255 ("tpm: Prevent hwrng from activating during resume") Cc: Signed-off-by: Thomas Fourier --- drivers/char/tpm/tpm-chip.c | 3 +++ drivers/char/tpm/tpm-interface.c | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c index 12b7394b34bd..7f500797b7a7 100644 --- a/drivers/char/tpm/tpm-chip.c +++ b/drivers/char/tpm/tpm-chip.c @@ -173,6 +173,9 @@ int tpm_try_get_ops(struct tpm_chip *chip) if (chip->flags & TPM_CHIP_FLAG_SUSPENDED) goto out_lock; + /* Ensure that device is fully resumed */ + rmb(); + rc = tpm_chip_start(chip); if (rc) goto out_lock; diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c index f745a098908b..2de12b02f62b 100644 --- a/drivers/char/tpm/tpm-interface.c +++ b/drivers/char/tpm/tpm-interface.c @@ -474,13 +474,12 @@ int tpm_pm_resume(struct device *dev) if (chip == NULL) return -ENODEV; - chip->flags &= ~TPM_CHIP_FLAG_SUSPENDED; - /* * Guarantee that SUSPENDED is written last, so that hwrng does not * activate before the chip has been fully resumed. */ wmb(); + chip->flags &= ~TPM_CHIP_FLAG_SUSPENDED; return 0; } -- 2.43.0