From nobody Mon Feb 9 10:58:34 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+85313+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85313+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1641521748; cv=none; d=zohomail.com; s=zohoarc; b=T7V8xJ2AZ6qy4+d2YLpT3ndPVevpjEhErKAR/Vg4lG5PRPjrbLhVI+RbK/pUrdb2wEoBTARdKyzn36DalgkUM13kW3+fGj/smJQePVF8vZBTHXcJyLUD9eIxjiRPKSx9/j12hd4amfmEy+DqwZ6aj3FnSczEmt47Xqx9WI3uVuA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1641521748; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=+AiYe/gZy/v7dcbuW3vTo8hxZc75RwY0Ob6zQVgxqZQ=; b=WrXZkGH1udtNoYDnQNC3P7UWExsm4vh3O106aHMiHkQWITW5tBelSVfz4BUjv6KNYj747JvDDpmJCDhDQc2ucfIU2nPJ7FKtTOV9wHtjxU0xM5rRdOB6kWDx4T0IqGoJfOo5Y8fCh+unbjcwYIXjlTFbroi5+lx5VryeugkQHng= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+85313+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1641521748759215.85793531607158; Thu, 6 Jan 2022 18:15:48 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 9C8YYY1788612xLhPfGoZHIU; Thu, 06 Jan 2022 18:15:48 -0800 X-Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) by mx.groups.io with SMTP id smtpd.web12.1454.1641521747461101721 for ; Thu, 06 Jan 2022 18:15:47 -0800 X-Received: by mail-pl1-f174.google.com with SMTP id l15so3779936pls.7 for ; Thu, 06 Jan 2022 18:15:47 -0800 (PST) X-Gm-Message-State: C9hquHblug9C0WcTHhUReSHOx1787277AA= X-Google-Smtp-Source: ABdhPJz8EcphtYUU79Z0Vu1A+vtuukFY3IiuxqfubatO//g2aSCk5yklyfN3KWUbQvpGi10GxHqOzw== X-Received: by 2002:a17:902:c40c:b0:149:7d72:15c5 with SMTP id k12-20020a170902c40c00b001497d7215c5mr49317789plk.133.1641521746963; Thu, 06 Jan 2022 18:15:46 -0800 (PST) X-Received: from localhost.localdomain ([50.35.74.198]) by smtp.gmail.com with ESMTPSA id j3sm3894875pfc.196.2022.01.06.18.15.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jan 2022 18:15:46 -0800 (PST) From: "Kun Qin" To: devel@edk2.groups.io Cc: Jian J Wang , Hao A Wu , Eric Dong , Ray Ni Subject: [edk2-devel] [PATCH v4 5/7] MdeModulePkg: PiSmmCore: Added parser of new MM communicate header Date: Thu, 6 Jan 2022 18:15:30 -0800 Message-Id: <20220107021532.1322-6-kuqin12@gmail.com> In-Reply-To: <20220107021532.1322-1-kuqin12@gmail.com> References: <20220107021532.1322-1-kuqin12@gmail.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kuqin12@gmail.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1641521748; bh=X82aAkIe/P00QiLpvsi+u8QB5QLm0eBUpa1//ofsBTg=; h=Cc:Date:From:Reply-To:Subject:To; b=VhImcxZG7twnZhg5KxrKcuJyNrAUFG7VftClBpCbgxVwb5/NQkBhVdOcSt0v9/Dd5jl YzMBXD32aG+7V9ybso5FEnBaOQDK7XH7Zwz9APdv0S1M8MPbdyYquPzHnT0co0oWz1hfg hqjftlum36I4tVwOl7Wdf0DyMNEHZIbincs= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1641521750529100021 Content-Type: text/plain; charset="utf-8" REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3398 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3430 MM communicate protocols are expanded with EFI_MM_COMMUNICATE_HEADER_V3 structure that cooperates with updated field types and flexible array. The PiSmmCore implementation is updated to detect and process incoming data accordingly. Two checks are also performed to prevent legacy communicate data or unsupported data is fed into MM core under agreed header guid. Cc: Jian J Wang Cc: Hao A Wu Cc: Eric Dong Cc: Ray Ni Signed-off-by: Kun Qin --- Notes: v3: - Newly added =20 v4: - Rebased with uncrusitify changes. MdeModulePkg/Core/PiSmmCore/PiSmmCore.c | 51 ++++++++++++++------ MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf | 1 + 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c b/MdeModulePkg/Core/Pi= SmmCore/PiSmmCore.c index 9e5c6cbe33dd..8d57f71dc969 100644 --- a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c @@ -647,12 +647,16 @@ SmmEntryPoint ( IN CONST EFI_SMM_ENTRY_CONTEXT *SmmEntryContext ) { - EFI_STATUS Status; - EFI_SMM_COMMUNICATE_HEADER *CommunicateHeader; - BOOLEAN InLegacyBoot; - BOOLEAN IsOverlapped; - VOID *CommunicationBuffer; - UINTN BufferSize; + EFI_STATUS Status; + EFI_MM_COMMUNICATE_HEADER_V3 *CommunicateHeader; + EFI_SMM_COMMUNICATE_HEADER *LegacyCommunicateHeader; + BOOLEAN InLegacyBoot; + BOOLEAN IsOverlapped; + VOID *CommunicationBuffer; + UINTN BufferSize; + EFI_GUID *CommGuid; + VOID *CommData; + UINTN CommHeaderSize; =20 // // Update SMST with contents of the SmmEntryContext structure @@ -708,19 +712,36 @@ SmmEntryPoint ( gSmmCorePrivate->CommunicationBuffer =3D NULL; gSmmCorePrivate->ReturnStatus =3D EFI_ACCESS_DENIED; } else { - CommunicateHeader =3D (EFI_SMM_COMMUNICATE_HEADER *)CommunicationB= uffer; - BufferSize -=3D OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data); - Status =3D SmiManage ( - &CommunicateHeader->HeaderGuid, - NULL, - CommunicateHeader->Data, - &BufferSize - ); + CommGuid =3D &((EFI_MM_COMMUNICATE_HEADER_V3 *)CommunicationBuffer= )->HeaderGuid; + // + // Check if the signature matches EFI_MM_COMMUNICATE_HEADER_V3 def= inition + // + if (CompareGuid (CommGuid, &gCommunicateHeaderV3Guid)) { + CommunicateHeader =3D (EFI_MM_COMMUNICATE_HEADER_V3 *)Communicat= ionBuffer; + ASSERT (CommunicateHeader->Signature =3D=3D EFI_MM_COMMUNICATE_H= EADER_V3_SIGNATURE); + ASSERT (CommunicateHeader->Version <=3D EFI_MM_COMMUNICATE_HEADE= R_V3_VERSION); + CommGuid =3D &CommunicateHeader->MessageGuid; + CommData =3D CommunicateHeader->MessageData; + CommHeaderSize =3D sizeof (EFI_MM_COMMUNICATE_HEADER_V3); + } else { + LegacyCommunicateHeader =3D (EFI_SMM_COMMUNICATE_HEADER *)Commun= icationBuffer; + CommGuid =3D &LegacyCommunicateHeader->HeaderGuid; + CommData =3D LegacyCommunicateHeader->Data; + CommHeaderSize =3D OFFSET_OF (EFI_SMM_COMMUNICATE_HEADE= R, Data); + } + + BufferSize -=3D CommHeaderSize; + Status =3D SmiManage ( + CommGuid, + NULL, + CommData, + &BufferSize + ); // // Update CommunicationBuffer, BufferSize and ReturnStatus // Communicate service finished, reset the pointer to CommBuffer t= o NULL // - gSmmCorePrivate->BufferSize =3D BufferSize + OFFSET_OF (E= FI_SMM_COMMUNICATE_HEADER, Data); + gSmmCorePrivate->BufferSize =3D BufferSize + CommHeaderSi= ze; gSmmCorePrivate->CommunicationBuffer =3D NULL; gSmmCorePrivate->ReturnStatus =3D (Status =3D=3D EFI_SUCCES= S) ? EFI_SUCCESS : EFI_NOT_FOUND; } diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf b/MdeModulePkg/Core/= PiSmmCore/PiSmmCore.inf index c8bfae3860fc..5a0929a45e19 100644 --- a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf @@ -118,6 +118,7 @@ [Guids] gSmiHandlerProfileGuid gEdkiiEndOfS3ResumeGuid ## SOMETIMES_PRODUCES ## GUID # Install protocol gEdkiiS3SmmInitDoneGuid ## SOMETIMES_PRODUCES ## GUID # Install protocol + gCommunicateHeaderV3Guid ## CONSUMES ## GUID # Communicate header =20 [UserExtensions.TianoCore."ExtraFiles"] PiSmmCoreExtra.uni --=20 2.34.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#85313): https://edk2.groups.io/g/devel/message/85313 Mute This Topic: https://groups.io/mt/88253684/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-