From: Gunnar Kudrjavets <gunnarku@amazon.com>
To: <peterhuewe@gmx.de>, <jarkko@kernel.org>
Cc: <jgg@ziepe.ca>, <noodles@meta.com>, <gunnarku@amazon.com>,
<linux-integrity@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
"Justinien Bouron" <jbouron@amazon.com>,
Muhammad Hammad Ijaz <mhijaz@amazon.com>
Subject: [PATCH] tpm: Fix uninitialized name_size_alg in tpm_buf_append_name()
Date: Thu, 7 May 2026 20:18:22 +0000 [thread overview]
Message-ID: <20260507201837.8282-1-gunnarku@amazon.com> (raw)
When tpm_buf_append_name() is called with a non-NULL name for a
handle, the code skips the tpm2_read_public() path (which sets
name_size_alg from the return value) and falls through to memcpy()
with an uninitialized name_size_alg as the size argument.
The contract for tpm_buf_append_name() supports callers passing a
non-NULL name. No current in-tree callers do so, making this a latent
bug that would trigger if a caller ever provides a pre-computed name
for a handle.
Fix this by restructuring the if/else to call name_size() when name
is provided, sharing the error check and name_size_alg assignment
with the existing tpm2_read_public() path. This restores the type of
validation that existed before commit bda1cbf73c6e ("tpm2-sessions:
Fix tpm2_read_public range checks") refactored the function.
Tested with KASAN by assigning 0xDEAD to name_size_alg to simulate an
undefined initial value. Calling tpm_buf_append_name() with a non-NULL
value for name results in the following warnings from KASAN:
BUG: KASAN: stack-out-of-bounds in tpm_buf_append_name+0x1e0/0x680
Read of size 57005 at addr ffff80009e5e79f0 by task sh/49616
Call trace:
show_stack+0x34/0xa0 (C)
dump_stack_lvl+0x5c/0x80
print_report+0x160/0x4b8
kasan_report+0x7c/0xd0
kasan_check_range+0xe8/0x190
__asan_memcpy+0x3c/0xa0
tpm_buf_append_name+0x1e0/0x680
run_test.isra.0+0x14c/0x1d8
There are no KASAN errors with the fix applied, and the function
behaves as expected.
Fixes: bda1cbf73c6e ("tpm2-sessions: Fix tpm2_read_public range checks")
Assisted-by: Kiro:claude-opus-4.6
Reviewed-by: Justinien Bouron <jbouron@amazon.com>
Reviewed-by: Muhammad Hammad Ijaz <mhijaz@amazon.com>
Signed-off-by: Gunnar Kudrjavets <gunnarku@amazon.com>
---
drivers/char/tpm/tpm2-sessions.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/drivers/char/tpm/tpm2-sessions.c b/drivers/char/tpm/tpm2-sessions.c
index c4da6fde748f..795cd99dc6fe 100644
--- a/drivers/char/tpm/tpm2-sessions.c
+++ b/drivers/char/tpm/tpm2-sessions.c
@@ -285,11 +285,14 @@ int tpm_buf_append_name(struct tpm_chip *chip, struct tpm_buf *buf,
mso == TPM2_MSO_NVRAM) {
if (!name) {
ret = tpm2_read_public(chip, handle, auth->name[slot]);
- if (ret < 0)
- goto err;
-
- name_size_alg = ret;
+ } else {
+ ret = name_size(name);
}
+
+ if (ret < 0)
+ goto err;
+
+ name_size_alg = ret;
} else {
if (name) {
dev_err(&chip->dev, "handle 0x%08x does not use a name\n",
base-commit: 9ec4175a30eb5adb95e446af83ddf6cb3286a82a
--
2.47.3
next reply other threads:[~2026-05-07 20:18 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-07 20:18 Gunnar Kudrjavets [this message]
2026-05-09 19:35 ` [PATCH] tpm: Fix uninitialized name_size_alg in tpm_buf_append_name() Jarkko Sakkinen
2026-05-09 22:34 ` [PATCH v2] " Gunnar Kudrjavets
2026-05-10 1:42 ` Jarkko Sakkinen
2026-05-10 17:11 ` [PATCH v2] tpm: Initialize name_size_alg for non-NULL name " Gunnar Kudrjavets
2026-05-10 18:26 ` Jarkko Sakkinen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260507201837.8282-1-gunnarku@amazon.com \
--to=gunnarku@amazon.com \
--cc=jarkko@kernel.org \
--cc=jbouron@amazon.com \
--cc=jgg@ziepe.ca \
--cc=linux-integrity@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mhijaz@amazon.com \
--cc=noodles@meta.com \
--cc=peterhuewe@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.