From nobody Mon Feb 9 17:05:23 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+85314+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+85314+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1641521749; cv=none; d=zohomail.com; s=zohoarc; b=AE4LmUrTnLJ8U1Zby5ZCsi5ePhc3CMIAHGKGnGRUrvG7hAjBX7KYGoDuIiyW/caLC4JwY/xKyfyTkzOZrBzZehWPIQ/qVX2cXbh1EEqkSV9iD8oVyT+QRr+fnn0ZzyuaqqsIMDQ7L/Y65XtCGlMsTLM0xLuz+p8nf+dTwyx3KxA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1641521749; 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=zhaQ37dWp1gujyZfXg6PNm5shw7FmXp4h2i7BhDQNI0=; b=GuacOaxxfLUASUHAnlO49I8j/gt5OxdKo2xJMhWSML8XNGBvwca6tRRnLVSOQweFQnsxxHWO56IdP1QpxMhiYlj4xAN8SBxtCL7DubB/adrcgZF1IBuFYCWhxI0F2XnkMnec2S7udPYhW9oAptootGz24RWhI2HFA0xE2RDC5CE= 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+85314+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 1641521749817180.46008640151035; Thu, 6 Jan 2022 18:15:49 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id Q78HYY1788612xLCm81XmMcd; Thu, 06 Jan 2022 18:15:49 -0800 X-Received: from mail-pg1-f169.google.com (mail-pg1-f169.google.com [209.85.215.169]) by mx.groups.io with SMTP id smtpd.web10.1546.1641521748107375532 for ; Thu, 06 Jan 2022 18:15:48 -0800 X-Received: by mail-pg1-f169.google.com with SMTP id z30so689709pge.4 for ; Thu, 06 Jan 2022 18:15:48 -0800 (PST) X-Gm-Message-State: zeaMduFDepmbLSxl0RuudDzjx1787277AA= X-Google-Smtp-Source: ABdhPJyenkgoDnVamXjCIThmrrqRPHaHUqQg7+bWcMZSYFRzmGzebfZa9xxXfj/6+fz4QWhoMCsEqA== X-Received: by 2002:aa7:8541:0:b0:4bb:b0f2:6134 with SMTP id y1-20020aa78541000000b004bbb0f26134mr57007038pfn.37.1641521747564; Thu, 06 Jan 2022 18:15:47 -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.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jan 2022 18:15:47 -0800 (PST) From: "Kun Qin" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Sami Mujawar , Jiewen Yao , Supreeth Venkatesh Subject: [edk2-devel] [PATCH v4 6/7] StandaloneMmPkg: StandaloneMmCore: Parsing new MM communicate header Date: Thu, 6 Jan 2022 18:15:31 -0800 Message-Id: <20220107021532.1322-7-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=1641521749; bh=O4tyfOhLLPNXbmT/At0DJH/SMCSbf9bxL8LBIt3H7V0=; h=Cc:Date:From:Reply-To:Subject:To; b=VBKRbR7vPz80itKrASdEyoHrJIgkk6S4lHElErGamyJXh2h4D59Nx52ChibuS2WPINr V59UbHjlCJLtShfleuTSzosL9v1kdXH6Y57U8aUFQwLYeM4O6OcOaqPVed4zfKxuKApNC k+8X/OcuqkXjPE43rpSuN3ow6VpScv5/F3U= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1641521750498100019 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: Ard Biesheuvel Cc: Sami Mujawar Cc: Jiewen Yao Cc: Supreeth Venkatesh Signed-off-by: Kun Qin --- Notes: v3: - Newly added =20 v4: - Rebased with uncrusitify changes. StandaloneMmPkg/Core/StandaloneMmCore.c | 35 ++++++++++++++++---- StandaloneMmPkg/Core/StandaloneMmCore.inf | 1 + 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.c b/StandaloneMmPkg/Core= /StandaloneMmCore.c index d221f1d1115d..8afb22493cb2 100644 --- a/StandaloneMmPkg/Core/StandaloneMmCore.c +++ b/StandaloneMmPkg/Core/StandaloneMmCore.c @@ -338,8 +338,12 @@ MmEntryPoint ( IN CONST EFI_MM_ENTRY_CONTEXT *MmEntryContext ) { - EFI_STATUS Status; - EFI_MM_COMMUNICATE_HEADER *CommunicateHeader; + EFI_STATUS Status; + EFI_MM_COMMUNICATE_HEADER_V3 *CommunicateHeader; + EFI_MM_COMMUNICATE_HEADER *LegacyCommunicateHeader; + EFI_GUID *CommGuid; + VOID *CommData; + UINTN CommHeaderSize; =20 DEBUG ((DEBUG_INFO, "MmEntryPoint ...\n")); =20 @@ -377,19 +381,36 @@ MmEntryPoint ( gMmCorePrivate->CommunicationBuffer =3D 0; gMmCorePrivate->ReturnStatus =3D EFI_INVALID_PARAMETER; } else { - CommunicateHeader =3D (EFI_MM_COMMUNICATE_HEADER *)(UINTN)= gMmCorePrivate->CommunicationBuffer; - gMmCorePrivate->BufferSize -=3D OFFSET_OF (EFI_MM_COMMUNICATE_HEADER= , Data); + CommGuid =3D &((EFI_MM_COMMUNICATE_HEADER_V3 *)(UINTN)gMmCorePrivate= ->CommunicationBuffer)->HeaderGuid; + // + // Check if the signature matches EFI_MM_COMMUNICATE_HEADER_V3 defin= ition + // + if (CompareGuid (CommGuid, &gCommunicateHeaderV3Guid)) { + CommunicateHeader =3D (EFI_MM_COMMUNICATE_HEADER_V3 *)(UINTN)gMmCo= rePrivate->CommunicationBuffer; + ASSERT (CommunicateHeader->Signature =3D=3D EFI_MM_COMMUNICATE_HEA= DER_V3_SIGNATURE); + ASSERT (CommunicateHeader->Version <=3D EFI_MM_COMMUNICATE_HEADER_= V3_VERSION); + CommGuid =3D &CommunicateHeader->MessageGuid; + CommData =3D CommunicateHeader->MessageData; + CommHeaderSize =3D sizeof (EFI_MM_COMMUNICATE_HEADER_V3); + } else { + LegacyCommunicateHeader =3D (EFI_MM_COMMUNICATE_HEADER *)(UINTN)gM= mCorePrivate->CommunicationBuffer; + CommGuid =3D &LegacyCommunicateHeader->HeaderGuid; + CommData =3D LegacyCommunicateHeader->Data; + CommHeaderSize =3D OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, = Data); + } + + gMmCorePrivate->BufferSize -=3D CommHeaderSize; Status =3D MmiManage ( - &CommunicateHeader->HeaderGuid, + CommGuid, NULL, - CommunicateHeader->Data, + CommData, (UINTN *)&gMmCorePrivate->BufferSize ); // // Update CommunicationBuffer, BufferSize and ReturnStatus // Communicate service finished, reset the pointer to CommBuffer to = NULL // - gMmCorePrivate->BufferSize +=3D OFFSET_OF (EFI_MM_COMMUNICAT= E_HEADER, Data); + gMmCorePrivate->BufferSize +=3D CommHeaderSize; gMmCorePrivate->CommunicationBuffer =3D 0; gMmCorePrivate->ReturnStatus =3D (Status =3D=3D EFI_SUCCESS) = ? EFI_SUCCESS : EFI_NOT_FOUND; } diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.inf b/StandaloneMmPkg/Co= re/StandaloneMmCore.inf index c44b9ff33303..e2e6cd32beee 100644 --- a/StandaloneMmPkg/Core/StandaloneMmCore.inf +++ b/StandaloneMmPkg/Core/StandaloneMmCore.inf @@ -75,6 +75,7 @@ [Guids] gEfiEventLegacyBootGuid gEfiEventExitBootServicesGuid gEfiEventReadyToBootGuid + gCommunicateHeaderV3Guid ## CONSUMES ## GUID # Communicate header =20 # # This configuration fails for CLANGPDB, which does not support PIE in the= GCC --=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 (#85314): https://edk2.groups.io/g/devel/message/85314 Mute This Topic: https://groups.io/mt/88253685/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-