diff mbox series

[v2,1/2] crypto: ccp: Avoid discarding errors in psp_send_platform_access_msg()

Message ID 20240213173429.43748-1-mario.limonciello@amd.com (mailing list archive)
State Accepted
Delegated to: Herbert Xu
Headers show
Series [v2,1/2] crypto: ccp: Avoid discarding errors in psp_send_platform_access_msg() | expand

Commit Message

Mario Limonciello Feb. 13, 2024, 5:34 p.m. UTC
Errors can potentially occur in the "processing" of PSP commands or
commands can be processed successfully but still return an error code in
the header.

This second case was being discarded because PSP communication worked but
the command returned an error code in the payload header.

Capture both cases and return them to the caller as -EIO for the caller
to investigate. The caller can detect the latter by looking at
`req->header->status`.

Reported-and-tested-by: Tim Van Patten <timvp@google.com>
Fixes: 7ccc4f4e2e50 ("crypto: ccp - Add support for an interface for platform features")
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
v1->v2:
 * Update tag for Tim
 * Reword commit message
---
 drivers/crypto/ccp/platform-access.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

Comments

Herbert Xu Feb. 24, 2024, 12:50 a.m. UTC | #1
On Tue, Feb 13, 2024 at 11:34:28AM -0600, Mario Limonciello wrote:
> Errors can potentially occur in the "processing" of PSP commands or
> commands can be processed successfully but still return an error code in
> the header.
> 
> This second case was being discarded because PSP communication worked but
> the command returned an error code in the payload header.
> 
> Capture both cases and return them to the caller as -EIO for the caller
> to investigate. The caller can detect the latter by looking at
> `req->header->status`.
> 
> Reported-and-tested-by: Tim Van Patten <timvp@google.com>
> Fixes: 7ccc4f4e2e50 ("crypto: ccp - Add support for an interface for platform features")
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> ---
> v1->v2:
>  * Update tag for Tim
>  * Reword commit message
> ---
>  drivers/crypto/ccp/platform-access.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)

All applied.  Thanks.
diff mbox series

Patch

diff --git a/drivers/crypto/ccp/platform-access.c b/drivers/crypto/ccp/platform-access.c
index 94367bc49e35..1b8ed3389733 100644
--- a/drivers/crypto/ccp/platform-access.c
+++ b/drivers/crypto/ccp/platform-access.c
@@ -118,9 +118,16 @@  int psp_send_platform_access_msg(enum psp_platform_access_msg msg,
 		goto unlock;
 	}
 
-	/* Store the status in request header for caller to investigate */
+	/*
+	 * Read status from PSP. If status is non-zero, it indicates an error
+	 * occurred during "processing" of the command.
+	 * If status is zero, it indicates the command was "processed"
+	 * successfully, but the result of the command is in the payload.
+	 * Return both cases to the caller as -EIO to investigate.
+	 */
 	cmd_reg = ioread32(cmd);
-	req->header.status = FIELD_GET(PSP_CMDRESP_STS, cmd_reg);
+	if (FIELD_GET(PSP_CMDRESP_STS, cmd_reg))
+		req->header.status = FIELD_GET(PSP_CMDRESP_STS, cmd_reg);
 	if (req->header.status) {
 		ret = -EIO;
 		goto unlock;