From nobody Fri Oct 3 20:22:40 2025 Received: from mta-65-227.siemens.flowmailer.net (mta-65-227.siemens.flowmailer.net [185.136.65.227]) (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 3DA4823AB8B for ; Mon, 25 Aug 2025 16:07:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.136.65.227 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756138046; cv=none; b=ryOk6bs+Gvt9WAazQ4PVQ4PAfqJ7YuPtKKKauEFmetw3M6/45k9npYdntSX7kkNhe6EZ3kRmyByytg7SKTPhUFVIcCUbAKftMh5QmUioStIoHb/9Q6hYTpU+fqFxuNn+JD9X6uTrMx1BUBOkGAoa9ZfQp93uFL68PlU9UqgzEkI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756138046; c=relaxed/simple; bh=BvL3+AKn9RI9wzn9NDZZT0oE2GQQJTfnS+GeXH6cCYk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HDGDhPMQLi8kR6ZGRxcXYutX/D0C145RDBh7GYWmYtEcZCgTGT+JOdnvnlMiZlo3o4i0j8WKpeBuliu5TNy+VFY+kCoNrtGsU5tksic+abumFRuD67z/JVHVi3TIoX9+1QJMazo6z7PUpPeC++5K79q2Hv9/z6Oen5aOG+5GG5E= 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=JKblPw0k; arc=none smtp.client-ip=185.136.65.227 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="JKblPw0k" Received: by mta-65-227.siemens.flowmailer.net with ESMTPSA id 202508251607139536f2c77ea9f58311 for ; Mon, 25 Aug 2025 18:07:13 +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=+AP3Z+rdRhCUENDNY6EklxuRkslINeOGiKO1+ttVuw4=; b=JKblPw0kOZd1IZ2/WdaX5bZlcAdERQryUeojeUmY2HLhrwEyN+jc89+7h7324V612lKQVs a6hcUTubi+YoR4HsTXhiLfPeyqCo9/gwRUgbubUY94le2JCSAyBYsNLfeV7tanAKUe+7yX1y Injc9qGwNZCB/aA60T5jtp4nRXztIE3GqvLEOH9pDA1IwmUa0bP9+Fl97BXwmhpEms/85DMR dQhNMu0LabKVA7iQ0vSlyvUdDEoD9+mKrYc4OSNt0LyYC8C9zs7JBRupPjvUAj8t8rXkV80b hz7ZaWmpGdl+rMNtBPw1Uy4pRCAJyaTaXM3yHtZE4HzdKvZ1ThhDDCzA==; 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 v3 1/4] efi: stmm: Fix incorrect buffer allocation method Date: Mon, 25 Aug 2025 18:07:10 +0200 Message-ID: <2ebf3cffa057aff45c5d221bee4a3ffa2c50dc36.1756138033.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 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 Acked-by: Sumit Garg --- 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 20:22:40 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 3F5032ECE8A for ; Mon, 25 Aug 2025 16:07:22 +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=1756138045; cv=none; b=IWHjeODZifapWhWuxJjvzHuy67qJ4vaRleqDFKTF8KapLvnAyV1BrrDhgQaCmVHPg/cVfA6S1o4ZHItSs+VKGJTwxUF3WVeAvbt2Fwwwvsa6XtaCvz+9qU3LIDOveq2yBSDsTPBhuooHw5DxFpHT0/Mv6EtUXeyxdge9fVYBMJA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756138045; c=relaxed/simple; bh=c3eOEas3QEYLyByLql5S/xo1NiuX9l+/sKHrI1/zTkM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=B+9+jzxOo6MBo2se8LH+H6nKsLp71/Ceto1fv2y+QUTBk0pmkDCrnj52V4R7CTHep2SRld17wfDxqhM6mD/DLA9SWlYYQJ7fhNxWFD1xSzjUab2uGoHfSHCAB36MnRZ91dgfUZhvQzZAn4n0miq+jXgWJ2kx00Ahj7vBHunSgJ4= 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=JWCp6glR; 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="JWCp6glR" Received: by mta-64-225.siemens.flowmailer.net with ESMTPSA id 2025082516071335b500469549edc950 for ; Mon, 25 Aug 2025 18:07:14 +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=AWxW7K0VvnMsb2MfEMdJGSifKobVT6/MtPRHpHEA05g=; b=JWCp6glRetjXwFqKLiyy/8ehD1QElfZ5JlGgc9JqKJHnj6bNxDNYE+3j0YMMyjKbe6xAc/ ZJk1M1oaJDpDr9aw/sHPJRaxc0g9GnbYyxIW3NEJJotv7l0AuGLILRU+vmZk5oxoRIsJn9CK Pec5+fKMcEsq3PMgCuFihI9K6ofQVzVLKeHu3yYSTsIzAT6KjQ7Uiigwd49uPkMwplwlbody xA1Jo1XwrRAvvvWhrbrIj9Tg6OTbgzif29viJgiCvYbe/LhW1AbIMX0a+zmdz/W7FC7TPE3+ IJ62R/Bxv5w1tTRFWVKa5+r0yqUWNNETg87MxVztHiQGMRIxsWBOQdtg==; 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 v3 2/4] efi: stmm: Do not return EFI_OUT_OF_RESOURCES on internal errors Date: Mon, 25 Aug 2025 18:07:11 +0200 Message-ID: <0a5d3c3df6eff0011d20e364dd63d46a6ce11eaf.1756138033.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 Acked-by: Sumit Garg --- 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 20:22:40 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 4665B2FF178 for ; Mon, 25 Aug 2025 16:07:22 +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=1756138045; cv=none; b=FOSVPOfO//75VAtd6Dn5asUrADHoi4gulCf+A7McbnlwVNj6uDsilmLeD1YojEx15sQHkTYLPT5SuQELdek5pYbD3dUe6/SbEeUZSR/Zv3zI0qoAg2cz/6sHv6S64p/i/P4jwIVynPbe59XHrJNfjohFd5dOlUgvdfXEGKnSZaM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756138045; c=relaxed/simple; bh=kpzwl5IixJTTR7SL4KsQpvxb2UynofWpn8JGb06Evqg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y6G40Ltd4W9DJI4asgrLMbU3WfCSyWMrCeZnRQx02+9mCN3zUQnGnHZ/7d9uWOsOm6Uc4Qts/QBSZ2wkkcN/xZ5DkAbgHUd+Q7L5YsrL/et/NNSBIKOHok33WmL9gfrKqltRBuGtW7TjxYUuEoY4g2DJKSgNP6L2VhiPioq/RRI= 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=R2QDwQu8; 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="R2QDwQu8" Received: by mta-65-225.siemens.flowmailer.net with ESMTPSA id 20250825160714b4fd4a02425f2b9779 for ; Mon, 25 Aug 2025 18:07:14 +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=rYRCF2IHsVpvuY/p1tdPnQYMO1M8HGQtME3DH/UxGlw=; b=R2QDwQu8GqUnA/IRd22zMQvb4DYZA77YDsUuZly3GymMQdYOwHQzKSx8cAgsDdbhJp4wD7 OM1Qxekm34fRKYeHcHjj49EP3MVKnW5SRVC/kadASQi/7PhL32itEoLJCbORUbnWKi/kXqEa t7hUpB8Mzjx2XpNC0C5JIi2nlP8PKUtKRL+YU+UyL/aI0aKFTGelxPiJB/7tQR1CPpa5U9Sg ulmOxxRmOEmzUpxBUfc93Ihl6akmWNeLrMdZoGNZMHD0pCsaqtB+ICUpMD871quu7HEsjzi6 nPhlsxzBnbFwPvmDM0sJ7B2feGQLX48psd8v3rFwHaV6EkgfS6HqIOlg==; 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 v3 3/4] efi: stmm: Drop unused EFI error from setup_mm_hdr arguments Date: Mon, 25 Aug 2025 18:07:12 +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 No caller ever evaluates what we return in 'ret'. They only use the return code of the function. Signed-off-by: Jan Kiszka Reviewed-by: Ilias Apalodimas Acked-by: Sumit Garg --- 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 20:22:40 2025 Received: from mta-65-227.siemens.flowmailer.net (mta-65-227.siemens.flowmailer.net [185.136.65.227]) (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 3D9D919006B for ; Mon, 25 Aug 2025 16:07:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.136.65.227 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756138044; cv=none; b=cggvYSRvK4dPRL6YA/57fmrVmeo7qrGf1G/hwmv8uUUFIxexr8g5hiQoXZThGkAv/atXHKvWEQNHabLARTjqPMJLiucxZqlXDcBlR4+yX3kagFWKWALJ/P44CEOdX1vrYacR/iPxckE35OhWb+klrxDgDXm03sgWKAR0dL2mw/E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756138044; c=relaxed/simple; bh=afEhyXcerRxJ2pUFrVuQ80HLCcLlpdreIpO7q+Efovc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iYu7H6qUGYsdlSU5O1vT7f97BPCk92X7gIi1c6CGnbSfykrOuM4IlGj3OMSj1B6eywd3CKfnoKicmIPriklidKTqJw5XeqINH64ZKZkm9OOiWby/36pjywxRg8O74K0OkknsryDWGdYs4d08Ygeo/TfBoU+x9bLm98HVmiggCBI= 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=c711gE2+; arc=none smtp.client-ip=185.136.65.227 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="c711gE2+" Received: by mta-65-227.siemens.flowmailer.net with ESMTPSA id 20250825160714648d4538d38de45353 for ; Mon, 25 Aug 2025 18:07:14 +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=c711gE2+yk5VvuqNyfW5+c93AyfEngpAFlCfSD+E+ScuDPwn3hmycBW4iCYp0zruY2NDgR nv9RDpwfMdm1kAdbkbK/liXhxAdYHMr8YY2GhfiZxU80J2YziGW/qSgYc8tR4/PObW6KOPew +RcCq5RfN//bNAZvobQG46cSdVDNMOPcPFxO1uMAasYCIZhokQcW9crie6+VUaculL1NVes9 Ek+YCHNYBOmxH9l2+FwMK+6vOVdbsgRivrLpeo+HT5+Wu/sypnSjzROevetCKGNNmisiA2oY c2F8tvO48r1etP7vs5Y22gtuwGBFkewB6kt+sNeAHZWeDnC7YYMYg+kQ==; 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 v3 4/4] efi: stmm: Drop unneeded null pointer check Date: Mon, 25 Aug 2025 18:07:13 +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 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 Acked-by: Sumit Garg --- 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