From 04da0b4a11fd128c08fb0192c02a142285f6fa69 Mon Sep 17 00:00:00 2001 From: lgao4 Date: Mon, 18 May 2009 05:03:45 +0000 Subject: Correct DriverSample to produce the ConfigAccess protocol And fix the bug in HiiDataBase to incorrectly free pool. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8321 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Universal/DriverSampleDxe/DriverSample.c | 45 +++++++++++++++------- 1 file changed, 31 insertions(+), 14 deletions(-) (limited to 'MdeModulePkg/Universal/DriverSampleDxe') diff --git a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c index 39e72909da..784cd28d7a 100644 --- a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c +++ b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c @@ -362,13 +362,16 @@ ExtractConfig ( // Try to get the current setting from variable. // BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION); - gRT->GetVariable ( - VariableName, - &mFormSetGuid, - NULL, - &BufferSize, - &PrivateData->Configuration - ); + Status = gRT->GetVariable ( + VariableName, + &mFormSetGuid, + NULL, + &BufferSize, + &PrivateData->Configuration + ); + if (EFI_ERROR (Status)) { + return Status; + } if (Request == NULL) { // @@ -476,13 +479,16 @@ RouteConfig ( // Get Buffer Storage data from EFI variable // BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION); - gRT->GetVariable ( - VariableName, - &mFormSetGuid, - NULL, - &BufferSize, - &PrivateData->Configuration - ); + Status = gRT->GetVariable ( + VariableName, + &mFormSetGuid, + NULL, + &BufferSize, + &PrivateData->Configuration + ); + if (EFI_ERROR (Status)) { + return Status; + } // // Convert to buffer data by helper function ConfigToBlock() @@ -968,6 +974,17 @@ DriverSampleInit ( BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION); Status = gRT->GetVariable (VariableName, &mFormSetGuid, NULL, &BufferSize, Configuration); if (EFI_ERROR (Status)) { + // + // Store zero data Buffer Storage to EFI variable + // + Status = gRT->SetVariable( + VariableName, + &mFormSetGuid, + EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS, + sizeof (DRIVER_SAMPLE_CONFIGURATION), + Configuration + ); + ASSERT (Status == EFI_SUCCESS); // // EFI variable for NV config doesn't exit, we should build this variable // based on default values stored in IFR -- cgit v1.2.3