From nobody Mon Feb 9 12:10: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+79402+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+79402+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1629176930; cv=none; d=zohomail.com; s=zohoarc; b=WK8YJc1TCReHa53UCGLgO+Ru4pximy9SJ5LGsSizDjEkS13hpi35ip1vIMPx5CGJHJz+VX5WuBGc+zMJ/UFEfg6pENJTqEqPPwaLm/ZziTnjIqyLEt1Qf01xHkjbNrPyfpv23p+DC9QGEUQtFtsp0uPakGKU7icUUVLNJXRumtc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1629176930; 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=kFMsEdMZcwMxKP1S3LEIxz1b7sLzejNXkp1ig+Tux7U=; b=DSTacn1OAGlKWehyKGliYL09Zt9wtSE6BHZ6wo30vsXfePFd4mnsIimeZvYEAKeQHxOcql2vzOleG5L62nh7TzodvelumEs6dglxvWtlGH6tqW/6USLwxmqIx6xjo8wkRMlHyvW72eo3jI8lhjCDYCMhFKInupxzjZPMyjFzzvQ= 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+79402+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 1629176930915765.5905226256099; Mon, 16 Aug 2021 22:08:50 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id A06yYY1788612xj2DCackLMk; Mon, 16 Aug 2021 22:08:50 -0700 X-Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by mx.groups.io with SMTP id smtpd.web08.35270.1629176930115813727 for ; Mon, 16 Aug 2021 22:08:50 -0700 X-Received: by mail-pl1-f182.google.com with SMTP id u15so8028719plg.13 for ; Mon, 16 Aug 2021 22:08:50 -0700 (PDT) X-Gm-Message-State: 54PZULwE9FbUxJRGQAadXaHEx1787277AA= X-Google-Smtp-Source: ABdhPJz2sBwbvfK1+rOAyTm2x7QzBN8x0kyy5pJ/DJpVdnx+vLOo4PWB/ibKHGYXzCPOQvlkKlqD6Q== X-Received: by 2002:a17:90a:4306:: with SMTP id q6mr1691839pjg.202.1629176929283; Mon, 16 Aug 2021 22:08:49 -0700 (PDT) X-Received: from localhost.localdomain ([50.35.88.161]) by smtp.gmail.com with ESMTPSA id i5sm737965pjk.47.2021.08.16.22.08.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Aug 2021 22:08:48 -0700 (PDT) From: "Kun Qin" To: devel@edk2.groups.io Cc: Jian J Wang , Hao A Wu , Eric Dong , Ray Ni Subject: [edk2-devel] [PATCH v3 5/7] MdeModulePkg: PiSmmCore: Added parser of new MM communicate header Date: Mon, 16 Aug 2021 22:08:05 -0700 Message-Id: <20210817050807.766-6-kuqin12@gmail.com> In-Reply-To: <20210817050807.766-1-kuqin12@gmail.com> References: <20210817050807.766-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=1629176930; bh=AV6yfC65n1eC93a+9q2I7973jtSC8cW0YpztZhTnlb4=; h=Cc:Date:From:Reply-To:Subject:To; b=JCuX3GhxMEegQY1ErVKHhmB8CQ9Uw5r8Cjd1FzTLggBuFPr+eJWGGY/g2MyTjrlMSx2 I0lBjUyLZ8c3u1QPEFV/v8K8PNUd6rtjstvIRl6+O+Jb/8ZeCcLqZD1QQpUzCJq+KKt7I /xOS+zHP9QT1beLp8+ZGhJ9/1hPon08tHg4= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1629176932529100006 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 MdeModulePkg/Core/PiSmmCore/PiSmmCore.c | 42 +++++++++++++++----- MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf | 1 + 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c b/MdeModulePkg/Core/Pi= SmmCore/PiSmmCore.c index cfa9922cbdb5..63ac2b5fcbbd 100644 --- a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c @@ -646,12 +646,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 @@ -707,19 +711,35 @@ 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); + 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_HEADER, Data); + } + BufferSize -=3D CommHeaderSize; Status =3D SmiManage ( - &CommunicateHeader->HeaderGuid, + CommGuid, NULL, - CommunicateHeader->Data, + CommData, &BufferSize ); // // Update CommunicationBuffer, BufferSize and ReturnStatus // Communicate service finished, reset the pointer to CommBuffer t= o NULL // - gSmmCorePrivate->BufferSize =3D BufferSize + OFFSET_OF (EFI_SMM_CO= MMUNICATE_HEADER, Data); + gSmmCorePrivate->BufferSize =3D BufferSize + CommHeaderSize; gSmmCorePrivate->CommunicationBuffer =3D NULL; gSmmCorePrivate->ReturnStatus =3D (Status =3D=3D EFI_SUCCESS) ? EF= I_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.32.0.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 (#79402): https://edk2.groups.io/g/devel/message/79402 Mute This Topic: https://groups.io/mt/84941522/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-