MdeModulePkg/FvSimpleFs: don't open DevicePath with BY_DRIVER mode

The device path protocol doesn't get closed at FvSimpleFilesystem
driver stop() when it's opened at start() with BY_DRIVER mode.

We change it to open DevicePath with GET_PROTOCOL mode as FV2 protocol with BY_DRIVER is enough.

Cc: Chao Zhang <chao.b.zhang@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Feng Tian <feng.tian@intel.com>
Reviewed-by: Chao Zhang <chao.b.zhang@intel.com>
This commit is contained in:
Feng Tian
2016-03-02 09:45:06 +08:00
parent 913ba15120
commit b07c966581

View File

@ -12,7 +12,7 @@
from the UEFI shell. It is entirely read-only. from the UEFI shell. It is entirely read-only.
Copyright (c) 2014, ARM Limited. All rights reserved. Copyright (c) 2014, ARM Limited. All rights reserved.
Copyright (c) 2014, Intel Corporation. All rights reserved.<BR> Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
@ -452,9 +452,7 @@ FvSimpleFileSystemDriverStart (
// Create an instance // Create an instance
// //
Instance = AllocateZeroPool (sizeof (FV_FILESYSTEM_INSTANCE)); Instance = AllocateZeroPool (sizeof (FV_FILESYSTEM_INSTANCE));
if (Instance == NULL) { ASSERT (Instance != NULL);
return EFI_OUT_OF_RESOURCES;
}
Instance->Root = NULL; Instance->Root = NULL;
Instance->FvProtocol = FvProtocol; Instance->FvProtocol = FvProtocol;
@ -469,6 +467,7 @@ FvSimpleFileSystemDriverStart (
EFI_NATIVE_INTERFACE, EFI_NATIVE_INTERFACE,
&Instance->SimpleFs &Instance->SimpleFs
); );
ASSERT_EFI_ERROR (Status);
// //
// Decide on a filesystem volume label, which will include the FV's guid. // Decide on a filesystem volume label, which will include the FV's guid.
@ -481,7 +480,7 @@ FvSimpleFileSystemDriverStart (
(VOID **) &FvDevicePath, (VOID **) &FvDevicePath,
gImageHandle, gImageHandle,
ControllerHandle, ControllerHandle,
EFI_OPEN_PROTOCOL_BY_DRIVER EFI_OPEN_PROTOCOL_GET_PROTOCOL
); );
if (!EFI_ERROR (Status)) { if (!EFI_ERROR (Status)) {
// //
@ -528,7 +527,7 @@ FvSimpleFileSystemDriverStart (
); );
} }
return Status; return EFI_SUCCESS;
} }
/** /**