summaryrefslogtreecommitdiff
path: root/OptionRomPkg/CirrusLogic5430Dxe
diff options
context:
space:
mode:
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2007-11-28 03:55:36 +0000
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2007-11-28 03:55:36 +0000
commit6a6d955c5f670141344c614c65dbea332f393b57 (patch)
tree80cb86cc7d44521d19279bb917146363376f67f1 /OptionRomPkg/CirrusLogic5430Dxe
parentac4f8b5abe6758183102be3feea30c7430eedf3a (diff)
downloadedk2-6a6d955c5f670141344c614c65dbea332f393b57.zip
edk2-6a6d955c5f670141344c614c65dbea332f393b57.tar.gz
edk2-6a6d955c5f670141344c614c65dbea332f393b57.tar.bz2
Fixed potential issues to release resources when error occurs.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4341 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'OptionRomPkg/CirrusLogic5430Dxe')
-rw-r--r--OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.c b/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.c
index eb5ce3b..424e19d 100644
--- a/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.c
+++ b/OptionRomPkg/CirrusLogic5430Dxe/CirrusLogic5430.c
@@ -211,7 +211,9 @@ CirrusLogic5430ControllerDriverStart (
{
EFI_STATUS Status;
CIRRUS_LOGIC_5430_PRIVATE_DATA *Private;
+ BOOLEAN PciAttributesSaved;
+ PciAttributesSaved = FALSE;
//
// Allocate Private context data for UGA Draw inteface.
//
@@ -255,6 +257,7 @@ CirrusLogic5430ControllerDriverStart (
if (EFI_ERROR (Status)) {
goto Error;
}
+ PciAttributesSaved = TRUE;
Status = Private->PciIo->Attributes (
Private->PciIo,
@@ -319,16 +322,17 @@ Error:
if (EFI_ERROR (Status)) {
if (Private) {
if (Private->PciIo) {
- //
- // Restore original PCI attributes
- //
- Private->PciIo->Attributes (
- Private->PciIo,
- EfiPciIoAttributeOperationSet,
- Private->OriginalPciAttributes,
- NULL
- );
-
+ if (PciAttributesSaved == TRUE) {
+ //
+ // Restore original PCI attributes
+ //
+ Private->PciIo->Attributes (
+ Private->PciIo,
+ EfiPciIoAttributeOperationSet,
+ Private->OriginalPciAttributes,
+ NULL
+ );
+ }
//
// Close the PCI I/O Protocol
//