From nobody Fri Oct 3 21:50:02 2025 Received: from mta-64-225.siemens.flowmailer.net (mta-64-225.siemens.flowmailer.net [185.136.64.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2D7A321ABA4 for ; Sat, 23 Aug 2025 17:22:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.136.64.225 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755969748; cv=none; b=W+RIkt9hbnXGrYU/EG/AZlp3jY4GaiuSTMBJoYzmM1zx3KaP7IRCprzYI0iOz+RBQ2vF6C6mFE8OFxW1oRe3kXuSK1hzkP/qAx4vKQ5C+8mKquFTduWyeJGsoZ+3h449nd4Tc2rCOuzoNfVgs1mhMr2iOASdoGTBOBbOMe44YEs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755969748; c=relaxed/simple; bh=/ThtVqdLaddiWNRtFgh0u7MoHvhX48j+RzKo4JsLSos=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tmaRjAyrWtjdDmr+bLQqV6Nf+26bKvRV6isHep0eZNCKo+7AuF5zXyeJdFDBBRcLnqC9AfeQmAdMUjIqgStTu4BgdDIv2hr3SUdU4PxdJM2uewZ4ja1g8yYynZpWdpUMv+rxA6TL3WBUek2n5KVY5NfpASt6KBee0QJvYAWRfsk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=siemens.com; spf=pass smtp.mailfrom=rts-flowmailer.siemens.com; dkim=pass (2048-bit key) header.d=siemens.com header.i=jan.kiszka@siemens.com header.b=XKkXNQ1V; arc=none smtp.client-ip=185.136.64.225 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=siemens.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rts-flowmailer.siemens.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=siemens.com header.i=jan.kiszka@siemens.com header.b="XKkXNQ1V" Received: by mta-64-225.siemens.flowmailer.net with ESMTPSA id 202508231722166de164d888bbfde842 for ; Sat, 23 Aug 2025 19:22:16 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm2; d=siemens.com; i=jan.kiszka@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc:References:In-Reply-To; bh=gtL0mnBMLqcMAT/NwTJI74s2wCyTzV/KL7vW90ojfyU=; b=XKkXNQ1Veh9bfRSrOJf/m4VpMErILIMfpvPT3fQNePwW+RuwA1p2iBhr4H2oSdT0mJkgGO 5MW5Kd4qzx4E8eolubblz9rUOTuY5kjVQxDN12sLRNlCNmrSg2IN8+U93mGFnlYygeCTRUJH fuQVyBlvQz7pl3wyqMkuSE/qiJvD2hA2MJCWc7/EbHQ7ev1SXc8sjABTcFL4CRkRfodPxo0T bHZKkfhxMQ/GaKxOathxd6mX7QwtgOhigrwYJwAChyXeNTvBTQjlnzfLvR6RsnfVdE5P+Gpm Ck3OUCorllz2em6KER4e1kwgGQrXd8JmWfig4KCZ309uTd6aKhaR0U/w==; From: Jan Kiszka To: Ard Biesheuvel , Masahisa Kojima , Ilias Apalodimas Cc: linux-efi@vger.kernel.org, linux-kernel@vger.kernel.org, Sumit Garg , Jens Wiklander , Hua Qian Li Subject: [PATCH v2 1/4] efi: stmm: Fix incorrect buffer allocation method Date: Sat, 23 Aug 2025 19:22:11 +0200 Message-ID: In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-294854:519-21489:flowmailer Content-Type: text/plain; charset="utf-8" From: Jan Kiszka The communication buffer allocated by setup_mm_hdr is later on passed to tee_shm_register_kernel_buf. The latter expects those buffers to be contiguous pages, but setup_mm_hdr just uses kmalloc. That can cause various corruptions or BUGs, specifically since 9aec2fb0fd5e, though it was broken before as well. Fix this by using alloc_pages_exact instead of kmalloc. Fixes: c44b6be62e8d ("efi: Add tee-based EFI variable driver") Signed-off-by: Jan Kiszka Acked-by: Ilias Apalodimas --- drivers/firmware/efi/stmm/tee_stmm_efi.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/drivers/firmware/efi/stmm/tee_stmm_efi.c b/drivers/firmware/ef= i/stmm/tee_stmm_efi.c index f741ca279052..e15d11ed165e 100644 --- a/drivers/firmware/efi/stmm/tee_stmm_efi.c +++ b/drivers/firmware/efi/stmm/tee_stmm_efi.c @@ -143,6 +143,10 @@ static efi_status_t mm_communicate(u8 *comm_buf, size_= t payload_size) return var_hdr->ret_status; } =20 +#define COMM_BUF_SIZE(__payload_size) (MM_COMMUNICATE_HEADER_SIZE + \ + MM_VARIABLE_COMMUNICATE_SIZE + \ + (__payload_size)) + /** * setup_mm_hdr() - Allocate a buffer for StandAloneMM and initialize the * header data. @@ -173,9 +177,8 @@ static void *setup_mm_hdr(u8 **dptr, size_t payload_siz= e, size_t func, return NULL; } =20 - comm_buf =3D kzalloc(MM_COMMUNICATE_HEADER_SIZE + - MM_VARIABLE_COMMUNICATE_SIZE + payload_size, - GFP_KERNEL); + comm_buf =3D alloc_pages_exact(COMM_BUF_SIZE(payload_size), + GFP_KERNEL | __GFP_ZERO); if (!comm_buf) { *ret =3D EFI_OUT_OF_RESOURCES; return NULL; @@ -239,7 +242,7 @@ static efi_status_t get_max_payload(size_t *size) */ *size -=3D 2; out: - kfree(comm_buf); + free_pages_exact(comm_buf, COMM_BUF_SIZE(payload_size)); return ret; } =20 @@ -282,7 +285,7 @@ static efi_status_t get_property_int(u16 *name, size_t = name_size, memcpy(var_property, &smm_property->property, sizeof(*var_property)); =20 out: - kfree(comm_buf); + free_pages_exact(comm_buf, COMM_BUF_SIZE(payload_size)); return ret; } =20 @@ -347,7 +350,7 @@ static efi_status_t tee_get_variable(u16 *name, efi_gui= d_t *vendor, memcpy(data, (u8 *)var_acc->name + var_acc->name_size, var_acc->data_size); out: - kfree(comm_buf); + free_pages_exact(comm_buf, COMM_BUF_SIZE(payload_size)); return ret; } =20 @@ -404,7 +407,7 @@ static efi_status_t tee_get_next_variable(unsigned long= *name_size, memcpy(name, var_getnext->name, var_getnext->name_size); =20 out: - kfree(comm_buf); + free_pages_exact(comm_buf, COMM_BUF_SIZE(payload_size)); return ret; } =20 @@ -467,7 +470,7 @@ static efi_status_t tee_set_variable(efi_char16_t *name= , efi_guid_t *vendor, ret =3D mm_communicate(comm_buf, payload_size); dev_dbg(pvt_data.dev, "Set Variable %s %d %lx\n", __FILE__, __LINE__, ret= ); out: - kfree(comm_buf); + free_pages_exact(comm_buf, COMM_BUF_SIZE(payload_size)); return ret; } =20 @@ -507,7 +510,7 @@ static efi_status_t tee_query_variable_info(u32 attribu= tes, *max_variable_size =3D mm_query_info->max_variable_size; =20 out: - kfree(comm_buf); + free_pages_exact(comm_buf, COMM_BUF_SIZE(payload_size)); return ret; } =20 --=20 2.43.0 From nobody Fri Oct 3 21:50:02 2025 Received: from mta-65-228.siemens.flowmailer.net (mta-65-228.siemens.flowmailer.net [185.136.65.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4281D81720 for ; Sat, 23 Aug 2025 17:22:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.136.65.228 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755969747; cv=none; b=ThpjVqXMs3KK3TU8qnRFBPO4ZS54/jduZENJhI+S28Euuti4XwbV+IzKoaTkDf/ojYbqh3WC2HURysPrPWEJJNaHnTxo35JQDIDA47/b3Va+6h65vIiif0BCI+Tr5aY2UsRdiy8z93FzqLKuFPocYkeRtKheZIYiqX5MdkwYF9Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755969747; c=relaxed/simple; bh=gKnQ0VN6b1kFWflESUQZ35PHQivutNo3thh7mWVrYD4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dDFaWJRTw0PTzbxzBhtrkW35Ux9YThpVq8hrvPLe9PS9642okJeizt9hEGFh/ooBPFsMnBafdqY+MfLNJdeyCBtDi9JQTZcPuo2j2SrZjj2hNo8flX5b+wpK4w9iq0K7fwwk6cWrDJbe1fBznNq97hRkABXnA1qnuDivyS3JNJk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=siemens.com; spf=pass smtp.mailfrom=rts-flowmailer.siemens.com; dkim=pass (2048-bit key) header.d=siemens.com header.i=jan.kiszka@siemens.com header.b=SMY4Yegt; arc=none smtp.client-ip=185.136.65.228 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=siemens.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rts-flowmailer.siemens.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=siemens.com header.i=jan.kiszka@siemens.com header.b="SMY4Yegt" Received: by mta-65-228.siemens.flowmailer.net with ESMTPSA id 2025082317221679c149d7dd15f4f582 for ; Sat, 23 Aug 2025 19:22:16 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm2; d=siemens.com; i=jan.kiszka@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc:References:In-Reply-To; bh=Tl6xER2al/6x47nOnSNWJ84gPoGmVSCZrLj9P6OG5EU=; b=SMY4YegtNf1twKWb9XXxXYYPnZQ4R/L5pghEdlhh3BMwoIyH3Kc109SmkSyKjbci9/8UbG 7xcKL1xHeX0DXstZLvCrlaQrVCZ+PDgpK2Cojoqdoj9cWdMque9J0FjSAgg/4iZYeNjrQUxA tkW3qSAQG7/MlaCuLRJhz28CtXgHLek50OGBQgKzZg6n9ercKh9uzMLZ+Oayt194X9X353zI nr2bb2J8kAjuhveuk8jDfRJ6ZM/or/MMmzIbrYrRGrBpf2ZeA/+QfX4OPUoNPwkJCAr/Lq8b B6Bf7UUMvdUS1gfpc0Mkmu/bN7UHLNhuEtWOr3x+JMv8Lw34xG5KGoYA==; From: Jan Kiszka To: Ard Biesheuvel , Masahisa Kojima , Ilias Apalodimas Cc: linux-efi@vger.kernel.org, linux-kernel@vger.kernel.org, Sumit Garg , Jens Wiklander , Hua Qian Li Subject: [PATCH v2 2/4] efi: stmm: Do not return EFI_OUT_OF_RESOURCES on internal errors Date: Sat, 23 Aug 2025 19:22:12 +0200 Message-ID: <9c9a688c91140b3a62c753f14b8d1eb1c87c51d7.1755969734.git.jan.kiszka@siemens.com> In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-294854:519-21489:flowmailer Content-Type: text/plain; charset="utf-8" From: Jan Kiszka When we are low on memory or when the internal API is violated, we cannot return EFI_OUT_OF_RESOURCES. According to the UEFI standard, that error code is either related to persistent storage used for the variable or even not foreseen as possible error (GetVariable e.g.). Use the not fully accurate but compliant error code EFI_DEVICE_ERROR in those cases. Signed-off-by: Jan Kiszka Reviewed-by: Ilias Apalodimas --- drivers/firmware/efi/stmm/tee_stmm_efi.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/firmware/efi/stmm/tee_stmm_efi.c b/drivers/firmware/ef= i/stmm/tee_stmm_efi.c index e15d11ed165e..8501056ade8a 100644 --- a/drivers/firmware/efi/stmm/tee_stmm_efi.c +++ b/drivers/firmware/efi/stmm/tee_stmm_efi.c @@ -218,7 +218,7 @@ static efi_status_t get_max_payload(size_t *size) SMM_VARIABLE_FUNCTION_GET_PAYLOAD_SIZE, &ret); if (!var_payload) - return EFI_OUT_OF_RESOURCES; + return EFI_DEVICE_ERROR; =20 ret =3D mm_communicate(comm_buf, payload_size); if (ret !=3D EFI_SUCCESS) @@ -264,7 +264,7 @@ static efi_status_t get_property_int(u16 *name, size_t = name_size, &comm_buf, payload_size, SMM_VARIABLE_FUNCTION_VAR_CHECK_VARIABLE_PROPERTY_GET, &ret); if (!smm_property) - return EFI_OUT_OF_RESOURCES; + return EFI_DEVICE_ERROR; =20 memcpy(&smm_property->guid, vendor, sizeof(smm_property->guid)); smm_property->name_size =3D name_size; @@ -320,7 +320,7 @@ static efi_status_t tee_get_variable(u16 *name, efi_gui= d_t *vendor, var_acc =3D setup_mm_hdr(&comm_buf, payload_size, SMM_VARIABLE_FUNCTION_GET_VARIABLE, &ret); if (!var_acc) - return EFI_OUT_OF_RESOURCES; + return EFI_DEVICE_ERROR; =20 /* Fill in contents */ memcpy(&var_acc->guid, vendor, sizeof(var_acc->guid)); @@ -386,7 +386,7 @@ static efi_status_t tee_get_next_variable(unsigned long= *name_size, SMM_VARIABLE_FUNCTION_GET_NEXT_VARIABLE_NAME, &ret); if (!var_getnext) - return EFI_OUT_OF_RESOURCES; + return EFI_DEVICE_ERROR; =20 /* Fill in contents */ memcpy(&var_getnext->guid, guid, sizeof(var_getnext->guid)); @@ -442,7 +442,7 @@ static efi_status_t tee_set_variable(efi_char16_t *name= , efi_guid_t *vendor, var_acc =3D setup_mm_hdr(&comm_buf, payload_size, SMM_VARIABLE_FUNCTION_SET_VARIABLE, &ret); if (!var_acc) - return EFI_OUT_OF_RESOURCES; + return EFI_DEVICE_ERROR; =20 /* * The API has the ability to override RO flags. If no RO check was @@ -498,7 +498,7 @@ static efi_status_t tee_query_variable_info(u32 attribu= tes, SMM_VARIABLE_FUNCTION_QUERY_VARIABLE_INFO, &ret); if (!mm_query_info) - return EFI_OUT_OF_RESOURCES; + return EFI_DEVICE_ERROR; =20 mm_query_info->attr =3D attributes; ret =3D mm_communicate(comm_buf, payload_size); --=20 2.43.0 From nobody Fri Oct 3 21:50:02 2025 Received: from mta-65-225.siemens.flowmailer.net (mta-65-225.siemens.flowmailer.net [185.136.65.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A4A772E718A for ; Sat, 23 Aug 2025 17:22:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.136.65.225 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755969748; cv=none; b=ImlohrEVjGw06zp3roT25yiKcnjkQueJJPb+DXdXhZ7grJR1MwTyP9ayQzAr1c3GbJx4XIFoRHj2FqbZBLe1jTkq3u6swkeBb5bYwkR1LQjncLpzHed/imcYJfxwmc421h6rxpDqtQz56Qqjq3EcEdLuaZ/cqxKo0PRI83ntWeY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755969748; c=relaxed/simple; bh=2BDfMFH+GjJUu7SQq2EriZ5TFY/wqvJTs4t6yXPB7YY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=l0DMyJMjVhhVUcTWjzGrcF7MO6K9exbzmvkQPy8X2TYDYmtl9I3QzDXlp9kIELfy5YiaaaB89QP7SBFE/Ey/KzhlEQItsjVa/4UJJeFbru9s1fmr68A4XZGcCM3VYWZWJ2c1f2vwjlOpNs4w4hhjTEW4ScFn0q8adR64nn0J1cM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=siemens.com; spf=pass smtp.mailfrom=rts-flowmailer.siemens.com; dkim=pass (2048-bit key) header.d=siemens.com header.i=jan.kiszka@siemens.com header.b=NQiygpgW; arc=none smtp.client-ip=185.136.65.225 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=siemens.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rts-flowmailer.siemens.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=siemens.com header.i=jan.kiszka@siemens.com header.b="NQiygpgW" Received: by mta-65-225.siemens.flowmailer.net with ESMTPSA id 20250823172217ffbdbec841ec024a07 for ; Sat, 23 Aug 2025 19:22:17 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm2; d=siemens.com; i=jan.kiszka@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc:References:In-Reply-To; bh=8TOSs70Y6gA6YolDQ/9R1EGvkwePCg7OrkxR2NJSog0=; b=NQiygpgW4bmQGR87xD3cesVhg8HY1KvTW1G19jGe/4quVClP62j6doNLvCeWc0L5bU3kit HbIAtTi8Ku/RHQG3C/GWxe2S0/0WhQmELC+GZ3KZUY7n71PIBGCYZAwtpijKhndxEgzeUv/a t/ivwzD80hjmdQ8EC4qm9EMpdqIeaz13QeTjjqCLs0lJKZwrCL5GyuvljAcC61rmrODV8Mc8 PhFS9a9s77ADjD7LBznCQtycXoXn2FteIJ58rtnOyyQqfT+TvIepIRlch2f+EtzJc0I/5OGY z8GLFpHZEWRcPJYs6QKQwTGfPTmmJwT33fRWQ+64QN6xsUiOQNMXGRbg==; From: Jan Kiszka To: Ard Biesheuvel , Masahisa Kojima , Ilias Apalodimas Cc: linux-efi@vger.kernel.org, linux-kernel@vger.kernel.org, Sumit Garg , Jens Wiklander , Hua Qian Li Subject: [PATCH v2 3/4] efi: stmm: Drop unused EFI error from setup_mm_hdr arguments Date: Sat, 23 Aug 2025 19:22:13 +0200 Message-ID: <445bbda26e505e06b9b830cb9938ac57e847b28e.1755969734.git.jan.kiszka@siemens.com> In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-294854:519-21489:flowmailer Content-Type: text/plain; charset="utf-8" From: Jan Kiszka No caller evaluates it. Signed-off-by: Jan Kiszka Reviewed-by: Ilias Apalodimas --- drivers/firmware/efi/stmm/tee_stmm_efi.c | 25 ++++++++---------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/drivers/firmware/efi/stmm/tee_stmm_efi.c b/drivers/firmware/ef= i/stmm/tee_stmm_efi.c index 8501056ade8a..c2bc8467b099 100644 --- a/drivers/firmware/efi/stmm/tee_stmm_efi.c +++ b/drivers/firmware/efi/stmm/tee_stmm_efi.c @@ -154,11 +154,9 @@ static efi_status_t mm_communicate(u8 *comm_buf, size_= t payload_size) * @dptr: pointer address to store allocated buffer * @payload_size: payload size * @func: standAloneMM function number - * @ret: EFI return code * Return: pointer to corresponding StandAloneMM function buffer or NULL */ -static void *setup_mm_hdr(u8 **dptr, size_t payload_size, size_t func, - efi_status_t *ret) +static void *setup_mm_hdr(u8 **dptr, size_t payload_size, size_t func) { const efi_guid_t mm_var_guid =3D EFI_MM_VARIABLE_GUID; struct efi_mm_communicate_header *mm_hdr; @@ -173,16 +171,13 @@ static void *setup_mm_hdr(u8 **dptr, size_t payload_s= ize, size_t func, if (max_buffer_size && max_buffer_size < (MM_COMMUNICATE_HEADER_SIZE + MM_VARIABLE_COMMUNICATE_SIZE + payload_size)) { - *ret =3D EFI_INVALID_PARAMETER; return NULL; } =20 comm_buf =3D alloc_pages_exact(COMM_BUF_SIZE(payload_size), GFP_KERNEL | __GFP_ZERO); - if (!comm_buf) { - *ret =3D EFI_OUT_OF_RESOURCES; + if (!comm_buf) return NULL; - } =20 mm_hdr =3D (struct efi_mm_communicate_header *)comm_buf; memcpy(&mm_hdr->header_guid, &mm_var_guid, sizeof(mm_hdr->header_guid)); @@ -192,7 +187,6 @@ static void *setup_mm_hdr(u8 **dptr, size_t payload_siz= e, size_t func, var_hdr->function =3D func; if (dptr) *dptr =3D comm_buf; - *ret =3D EFI_SUCCESS; =20 return var_hdr->data; } @@ -215,8 +209,7 @@ static efi_status_t get_max_payload(size_t *size) =20 payload_size =3D sizeof(*var_payload); var_payload =3D setup_mm_hdr(&comm_buf, payload_size, - SMM_VARIABLE_FUNCTION_GET_PAYLOAD_SIZE, - &ret); + SMM_VARIABLE_FUNCTION_GET_PAYLOAD_SIZE); if (!var_payload) return EFI_DEVICE_ERROR; =20 @@ -262,7 +255,7 @@ static efi_status_t get_property_int(u16 *name, size_t = name_size, =20 smm_property =3D setup_mm_hdr( &comm_buf, payload_size, - SMM_VARIABLE_FUNCTION_VAR_CHECK_VARIABLE_PROPERTY_GET, &ret); + SMM_VARIABLE_FUNCTION_VAR_CHECK_VARIABLE_PROPERTY_GET); if (!smm_property) return EFI_DEVICE_ERROR; =20 @@ -318,7 +311,7 @@ static efi_status_t tee_get_variable(u16 *name, efi_gui= d_t *vendor, =20 payload_size =3D MM_VARIABLE_ACCESS_HEADER_SIZE + name_size + tmp_dsize; var_acc =3D setup_mm_hdr(&comm_buf, payload_size, - SMM_VARIABLE_FUNCTION_GET_VARIABLE, &ret); + SMM_VARIABLE_FUNCTION_GET_VARIABLE); if (!var_acc) return EFI_DEVICE_ERROR; =20 @@ -383,8 +376,7 @@ static efi_status_t tee_get_next_variable(unsigned long= *name_size, =20 payload_size =3D MM_VARIABLE_GET_NEXT_HEADER_SIZE + out_name_size; var_getnext =3D setup_mm_hdr(&comm_buf, payload_size, - SMM_VARIABLE_FUNCTION_GET_NEXT_VARIABLE_NAME, - &ret); + SMM_VARIABLE_FUNCTION_GET_NEXT_VARIABLE_NAME); if (!var_getnext) return EFI_DEVICE_ERROR; =20 @@ -440,7 +432,7 @@ static efi_status_t tee_set_variable(efi_char16_t *name= , efi_guid_t *vendor, * the properties, if the allocation fails */ var_acc =3D setup_mm_hdr(&comm_buf, payload_size, - SMM_VARIABLE_FUNCTION_SET_VARIABLE, &ret); + SMM_VARIABLE_FUNCTION_SET_VARIABLE); if (!var_acc) return EFI_DEVICE_ERROR; =20 @@ -495,8 +487,7 @@ static efi_status_t tee_query_variable_info(u32 attribu= tes, =20 payload_size =3D sizeof(*mm_query_info); mm_query_info =3D setup_mm_hdr(&comm_buf, payload_size, - SMM_VARIABLE_FUNCTION_QUERY_VARIABLE_INFO, - &ret); + SMM_VARIABLE_FUNCTION_QUERY_VARIABLE_INFO); if (!mm_query_info) return EFI_DEVICE_ERROR; =20 --=20 2.43.0 From nobody Fri Oct 3 21:50:02 2025 Received: from mta-64-225.siemens.flowmailer.net (mta-64-225.siemens.flowmailer.net [185.136.64.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E11ED2E763D for ; Sat, 23 Aug 2025 17:22:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.136.64.225 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755969748; cv=none; b=bdAzy0n6IliiaJQnaswbcqNikQDlwH/ZE7TdVJTiXtKOjjd7VFjiojpiV6T2rBWDaiibd/dTuE5c5Qv4h+MbI1QZzfwJDw0P/F8H1JGBDA/3L6yjJK5U9nuUO6Ak9AbQS7CEw/RAMCx6cYfeKO/hecXiBdly9WpZ4g9ftOerukw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755969748; c=relaxed/simple; bh=afEhyXcerRxJ2pUFrVuQ80HLCcLlpdreIpO7q+Efovc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Yp6H3lpt2rD/CaujDfqALUxid5/475b4G9Uldf0fHyd92/hg3FFo7hSxqtA7/TzbZa316T56Sslj7f2HLFI0H15XtIuuG1X6p8qU1gON9X5sS/QPRimqR+09ImpGHykU8+CEEl1NgMztGe4Tl4mR5Klk7CntNGgUlGopa58QBV8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=siemens.com; spf=pass smtp.mailfrom=rts-flowmailer.siemens.com; dkim=pass (2048-bit key) header.d=siemens.com header.i=jan.kiszka@siemens.com header.b=ZxagSBcl; arc=none smtp.client-ip=185.136.64.225 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=siemens.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rts-flowmailer.siemens.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=siemens.com header.i=jan.kiszka@siemens.com header.b="ZxagSBcl" Received: by mta-64-225.siemens.flowmailer.net with ESMTPSA id 20250823172217f04991a4fae9961175 for ; Sat, 23 Aug 2025 19:22:17 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm2; d=siemens.com; i=jan.kiszka@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc:References:In-Reply-To; bh=9B4yx0Y9gMLMy4+y7N4u4X2Mzh1VO2RHXLHiQLJZ9As=; b=ZxagSBclbuvGNfJzD3qK4Az0lXmSg4Oao+t6Jo/HpLOCDcPGF75a/DTYS7pKicTCR5K3kl rJkXRrWh0gUG9eSmEsVW5K8QwVfXG/Y1ZWoviGHd/F9Hb2bZx18wP4iWXgkGAxqyd7K20PuV KZ8t8Pks6Xo2NvEMaJrsTFk5B0YechsLDi693mjtvFO27UBXZJtUDBDPIx5RRMx90jZdTbfy 3Tdcp5zOK1dkfs3TPAEcXj8UXLhGtaQk9zDqeTrmxu4kDIbeDQtlKAPe6JZtvttUA7mLSIKg oQDBe8AVnCb5km+bGatx15bkmxk+PDmMwn+GmNz73YJsXVRJ6CY55Tqg==; From: Jan Kiszka To: Ard Biesheuvel , Masahisa Kojima , Ilias Apalodimas Cc: linux-efi@vger.kernel.org, linux-kernel@vger.kernel.org, Sumit Garg , Jens Wiklander , Hua Qian Li Subject: [PATCH v2 4/4] efi: stmm: Drop unneeded null pointer check Date: Sat, 23 Aug 2025 19:22:14 +0200 Message-ID: <19d1806d6f8b16b77dbdbb0e3ebf5ccae8389fac.1755969734.git.jan.kiszka@siemens.com> In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-294854:519-21489:flowmailer Content-Type: text/plain; charset="utf-8" From: Jan Kiszka The API documenation of setup_mm_hdr does not mention that dptr can be NULL, this is a local function, and no caller passes NULL. So drop the unneeded check. Signed-off-by: Jan Kiszka Reviewed-by: Ilias Apalodimas --- drivers/firmware/efi/stmm/tee_stmm_efi.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/firmware/efi/stmm/tee_stmm_efi.c b/drivers/firmware/ef= i/stmm/tee_stmm_efi.c index c2bc8467b099..65c0fe1ba275 100644 --- a/drivers/firmware/efi/stmm/tee_stmm_efi.c +++ b/drivers/firmware/efi/stmm/tee_stmm_efi.c @@ -185,8 +185,7 @@ static void *setup_mm_hdr(u8 **dptr, size_t payload_siz= e, size_t func) =20 var_hdr =3D (struct smm_variable_communicate_header *)mm_hdr->data; var_hdr->function =3D func; - if (dptr) - *dptr =3D comm_buf; + *dptr =3D comm_buf; =20 return var_hdr->data; } --=20 2.43.0