mirror of https://github.com/acidanthera/audk.git
MdeModulePkg: VariableSmmRuntimeDxe: Fix Variable Policy Message Length
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3709 In EDKII implementation of variable policy, the DXE runtime agent would communicate to MM to disable, register or query policies. However, these operations populate the value of MessageLength that includes communicate header to include MM communicate header, which mismatches with the description of PI specification. This fix will correct the MessageLength field calculation to exclude the size of MM_COMMUNICATE_HEADER. Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Hao A Wu <hao.a.wu@intel.com> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com> Cc: Michael Kubacki <michael.kubacki@microsoft.com> Signed-off-by: Kun Qin <kuqin12@gmail.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
This commit is contained in:
parent
7e5c603cba
commit
ee67067f17
|
@ -89,7 +89,7 @@ ProtocolDisableVariablePolicy (
|
|||
CommHeader = mMmCommunicationBuffer;
|
||||
PolicyHeader = (VAR_CHECK_POLICY_COMM_HEADER *)&CommHeader->Data;
|
||||
CopyGuid (&CommHeader->HeaderGuid, &gVarCheckPolicyLibMmiHandlerGuid);
|
||||
CommHeader->MessageLength = BufferSize;
|
||||
CommHeader->MessageLength = BufferSize - OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data);
|
||||
PolicyHeader->Signature = VAR_CHECK_POLICY_COMM_SIG;
|
||||
PolicyHeader->Revision = VAR_CHECK_POLICY_COMM_REVISION;
|
||||
PolicyHeader->Command = VAR_CHECK_POLICY_COMMAND_DISABLE;
|
||||
|
@ -138,7 +138,7 @@ ProtocolIsVariablePolicyEnabled (
|
|||
PolicyHeader = (VAR_CHECK_POLICY_COMM_HEADER *)&CommHeader->Data;
|
||||
CommandParams = (VAR_CHECK_POLICY_COMM_IS_ENABLED_PARAMS *)(PolicyHeader + 1);
|
||||
CopyGuid (&CommHeader->HeaderGuid, &gVarCheckPolicyLibMmiHandlerGuid);
|
||||
CommHeader->MessageLength = BufferSize;
|
||||
CommHeader->MessageLength = BufferSize - OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data);
|
||||
PolicyHeader->Signature = VAR_CHECK_POLICY_COMM_SIG;
|
||||
PolicyHeader->Revision = VAR_CHECK_POLICY_COMM_REVISION;
|
||||
PolicyHeader->Command = VAR_CHECK_POLICY_COMMAND_IS_ENABLED;
|
||||
|
@ -213,7 +213,7 @@ ProtocolRegisterVariablePolicy (
|
|||
PolicyHeader = (VAR_CHECK_POLICY_COMM_HEADER *)&CommHeader->Data;
|
||||
PolicyBuffer = (VOID *)(PolicyHeader + 1);
|
||||
CopyGuid (&CommHeader->HeaderGuid, &gVarCheckPolicyLibMmiHandlerGuid);
|
||||
CommHeader->MessageLength = BufferSize;
|
||||
CommHeader->MessageLength = BufferSize - OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data);
|
||||
PolicyHeader->Signature = VAR_CHECK_POLICY_COMM_SIG;
|
||||
PolicyHeader->Revision = VAR_CHECK_POLICY_COMM_REVISION;
|
||||
PolicyHeader->Command = VAR_CHECK_POLICY_COMMAND_REGISTER;
|
||||
|
@ -270,7 +270,7 @@ DumpVariablePolicyHelper (
|
|||
PolicyHeader = (VAR_CHECK_POLICY_COMM_HEADER *)&CommHeader->Data;
|
||||
CommandParams = (VAR_CHECK_POLICY_COMM_DUMP_PARAMS *)(PolicyHeader + 1);
|
||||
CopyGuid (&CommHeader->HeaderGuid, &gVarCheckPolicyLibMmiHandlerGuid);
|
||||
CommHeader->MessageLength = BufferSize;
|
||||
CommHeader->MessageLength = BufferSize - OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data);
|
||||
PolicyHeader->Signature = VAR_CHECK_POLICY_COMM_SIG;
|
||||
PolicyHeader->Revision = VAR_CHECK_POLICY_COMM_REVISION;
|
||||
PolicyHeader->Command = VAR_CHECK_POLICY_COMMAND_DUMP;
|
||||
|
@ -397,7 +397,7 @@ ProtocolLockVariablePolicy (
|
|||
CommHeader = mMmCommunicationBuffer;
|
||||
PolicyHeader = (VAR_CHECK_POLICY_COMM_HEADER *)&CommHeader->Data;
|
||||
CopyGuid (&CommHeader->HeaderGuid, &gVarCheckPolicyLibMmiHandlerGuid);
|
||||
CommHeader->MessageLength = BufferSize;
|
||||
CommHeader->MessageLength = BufferSize - OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data);
|
||||
PolicyHeader->Signature = VAR_CHECK_POLICY_COMM_SIG;
|
||||
PolicyHeader->Revision = VAR_CHECK_POLICY_COMM_REVISION;
|
||||
PolicyHeader->Command = VAR_CHECK_POLICY_COMMAND_LOCK;
|
||||
|
|
Loading…
Reference in New Issue