1
0
Files
linux/debian/patches/patchset-pf/fixes/0010-fixes-6.14-update-tpm2_start_auth_session-fix.patch
2025-04-11 00:38:04 +03:00

77 lines
2.0 KiB
Diff

From d8c360e932feed8798adf37ffad5d93e47ab032f Mon Sep 17 00:00:00 2001
From: Oleksandr Natalenko <oleksandr@natalenko.name>
Date: Tue, 8 Apr 2025 19:51:44 +0200
Subject: fixes-6.14: update tpm2_start_auth_session() fix
Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name>
---
drivers/char/tpm/tpm2-sessions.c | 2 +-
include/linux/tpm.h | 38 +++++++++++++++-----------------
2 files changed, 19 insertions(+), 21 deletions(-)
--- a/drivers/char/tpm/tpm2-sessions.c
+++ b/drivers/char/tpm/tpm2-sessions.c
@@ -1016,7 +1016,7 @@ int tpm2_start_auth_session(struct tpm_c
/* hash algorithm for session */
tpm_buf_append_u16(&buf, TPM_ALG_SHA256);
- rc = tpm_to_ret(tpm_transmit_cmd(chip, &buf, 0, "StartAuthSession"));
+ rc = tpm_ret_to_err(tpm_transmit_cmd(chip, &buf, 0, "StartAuthSession"));
tpm2_flush_context(chip, null_key);
if (rc == TPM2_RC_SUCCESS)
--- a/include/linux/tpm.h
+++ b/include/linux/tpm.h
@@ -260,26 +260,6 @@ enum tpm2_return_codes {
TPM2_RC_SESSION_MEMORY = 0x0903,
};
-/*
- * Convert a return value from tpm_transmit_cmd() to a POSIX return value. The
- * fallback return value is -EFAULT.
- */
-static inline ssize_t tpm_to_ret(ssize_t ret)
-{
- /* Already a POSIX error: */
- if (ret < 0)
- return ret;
-
- switch (ret) {
- case TPM2_RC_SUCCESS:
- return 0;
- case TPM2_RC_SESSION_MEMORY:
- return -ENOMEM;
- default:
- return -EFAULT;
- }
-}
-
enum tpm2_command_codes {
TPM2_CC_FIRST = 0x011F,
TPM2_CC_HIERARCHY_CONTROL = 0x0121,
@@ -457,6 +437,24 @@ static inline u32 tpm2_rc_value(u32 rc)
return (rc & BIT(7)) ? rc & 0xbf : rc;
}
+/*
+ * Convert a return value from tpm_transmit_cmd() to POSIX error code.
+ */
+static inline ssize_t tpm_ret_to_err(ssize_t ret)
+{
+ if (ret < 0)
+ return ret;
+
+ switch (tpm2_rc_value(ret)) {
+ case TPM2_RC_SUCCESS:
+ return 0;
+ case TPM2_RC_SESSION_MEMORY:
+ return -ENOMEM;
+ default:
+ return -EFAULT;
+ }
+}
+
#if defined(CONFIG_TCG_TPM) || defined(CONFIG_TCG_TPM_MODULE)
extern int tpm_is_tpm2(struct tpm_chip *chip);