From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) by mx.groups.io with SMTP id smtpd.web08.4424.1623289393736188653 for ; Wed, 09 Jun 2021 18:43:13 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20161025 header.b=JA/ZmDo8; spf=pass (domain: gmail.com, ip: 209.85.210.181, mailfrom: kuqin12@gmail.com) Received: by mail-pf1-f181.google.com with SMTP id h12so268221pfe.2 for ; Wed, 09 Jun 2021 18:43:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=i3VMiXrLm4THlVKRPqOQ0vQtDtzFVqV/X1tFiRfYg1U=; b=JA/ZmDo8wdPaileA5Wu9rbbDperGQhVrl1OgTp+Kj4VVKb+Tu30cIzSzoIPpjtgZiG zCueDPebicoT3DS60OIVrRoaX1tfkU4YE63jLshgGZmmnq/WNt0HoLjsNssCSC4PHQZn y+t5bKo4n2AhK3Tgp8/vCOitfDsQ348cRAK6x+CZGltXPYBQGadg4DeyMSbNMuSOL7q4 vfVOzw74+ZSxA92klc/S9MhUAGxdbHhwLORZPyGTMemq2tj+Hk907FUobL+pIGfpdLAf 9P7XPyyIs/qGhClVTVWMn7B2h7HzT3kfAj3xHfVXsxPMbDxKYNO8JQ046NhA2HDoZ9fU 4dKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=i3VMiXrLm4THlVKRPqOQ0vQtDtzFVqV/X1tFiRfYg1U=; b=ofbMijFRfQ9I2mTVx9EXUsMnmfBxuD3/WjmPHzdonj5U1CFOx6MoEMQB5WMhS8Lyec zkLq1tjpTDGxykF6I0QYtJB3UJVKAL1AXtxXzuwQ40Qj5MBjq6l1PC4ww5v1Zdau7ijg 5f/KKltA+mw6vT1CahtHY8dudu4oizYeCIwTAJMq+B0dLN/FYdUqjHZJiy7XevzrNEoq oqlaiwURcPuL22QXtTmkfKuzdVrJ13/bIb3phfvj3ve8ODrpUNSSyT+hsgSanp5ne2/v G8xGKqL8d9Vb1+ubEyHKu9ljCQ+1JOA6wgd4R+bWsTT3ouku0kGz8OUjw4SC8UzyD/sY IL3g== X-Gm-Message-State: AOAM532xNfyfWR5U+kvzm32120O9cHhASCS9rAvY0y3U+h9oSM84BCY1 M2gAOnImehhNRV0tv75/XTnC0DLmUw+r1Q== X-Google-Smtp-Source: ABdhPJwkRRSruqSs0rlaYmKG/zrBFffmP5ITr7mtqwJoyWfMgSHlrhrxiCDWUUOkOEZrEN3bhxhyiQ== X-Received: by 2002:a63:5a5d:: with SMTP id k29mr2454513pgm.215.1623289393147; Wed, 09 Jun 2021 18:43:13 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([50.35.88.161]) by smtp.gmail.com with ESMTPSA id p20sm624990pff.204.2021.06.09.18.43.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Jun 2021 18:43:12 -0700 (PDT) From: "Kun Qin" To: devel@edk2.groups.io Cc: Jian J Wang , Hao A Wu , Eric Dong , Ray Ni Subject: [PATCH v1 2/5] MdeModulePkg: PiSmmIpl: Update MessageLength calculation for MmCommunicate Date: Wed, 9 Jun 2021 18:42:56 -0700 Message-Id: <20210610014259.1151-3-kuqin12@gmail.com> X-Mailer: git-send-email 2.31.1.windows.1 In-Reply-To: <20210610014259.1151-1-kuqin12@gmail.com> References: <20210610014259.1151-1-kuqin12@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3398 This change updated calculation routine for MM communication in PiSmmIpl. It removes ambiguity brought in by UINTN variables from this routine and paves way for updating definition of field MessageLength in EFI_MM_COMMUNICATE_HEADER to definitive size. Cc: Jian J Wang Cc: Hao A Wu Cc: Eric Dong Cc: Ray Ni Signed-off-by: Kun Qin --- MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c | 13 ++++++++++++- MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c index 599a0cd01d80..9508715fda24 100644 --- a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c @@ -34,6 +34,7 @@ #include #include #include +#include // BZ3398 #include "PiSmmCorePrivateData.h" @@ -515,6 +516,7 @@ SmmCommunicationCommunicate ( EFI_STATUS Status; EFI_SMM_COMMUNICATE_HEADER *CommunicateHeader; BOOLEAN OldInSmm; + UINT64 BZ3398_LongCommSize; UINTN TempCommSize; // @@ -527,7 +529,16 @@ SmmCommunicationCommunicate ( CommunicateHeader = (EFI_SMM_COMMUNICATE_HEADER *) CommBuffer; if (CommSize == NULL) { - TempCommSize = OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data) + CommunicateHeader->MessageLength; + // BZ3398 Starts: Make MessageLength the same size in EFI_MM_COMMUNICATE_HEADER for both IA32 and X64. + Status = SafeUint64Add (OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data), CommunicateHeader->MessageLength, &BZ3398_LongCommSize); + if (EFI_ERROR (Status)) { + return EFI_INVALID_PARAMETER; + } + Status = SafeUint64ToUintn (BZ3398_LongCommSize, &TempCommSize); + if (EFI_ERROR (Status)) { + return EFI_INVALID_PARAMETER; + } + // BZ3398 Ends } else { TempCommSize = *CommSize; // diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf index 6109d6b5449c..87142e27fa47 100644 --- a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf @@ -46,6 +46,7 @@ [LibraryClasses] DxeServicesLib PcdLib ReportStatusCodeLib + SafeIntLib #BZ3398 [Protocols] gEfiSmmBase2ProtocolGuid ## PRODUCES -- 2.31.1.windows.1