The ShellOpenFileByDevicePath() API promises to set the DeviceHandle
output parameter to the handle of the filesystem identified by the
FilePath input parameter. However, this doesn't actually happen when the
UEFI Shell 2.0 method is used (which is basically "always" nowadays).
Accordingly, the only caller of ShellOpenFileByDevicePath(), namely
ShellOpenFileByName(), defines a (dummy) local DeviceHandle variable just
so it can call ShellOpenFileByDevicePath().
Remove the useless output parameter.
Cc: Jaben Carsey <jaben.carsey@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1008
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
---
Notes:
v2:
- pick up Jaben's R-b
ShellPkg/Library/UefiShellLib/UefiShellLib.inf | 2 +-
ShellPkg/Include/Library/ShellLib.h | 2 --
ShellPkg/Library/UefiShellLib/UefiShellLib.c | 11 ++++-------
3 files changed, 5 insertions(+), 10 deletions(-)
diff --git a/ShellPkg/Library/UefiShellLib/UefiShellLib.inf b/ShellPkg/Library/UefiShellLib/UefiShellLib.inf
index 0df632378fe6..38d9a4b81f5f 100644
--- a/ShellPkg/Library/UefiShellLib/UefiShellLib.inf
+++ b/ShellPkg/Library/UefiShellLib/UefiShellLib.inf
@@ -19,7 +19,7 @@ [Defines]
BASE_NAME = UefiShellLib
FILE_GUID = 449D0F00-2148-4a43-9836-F10B3980ECF5
MODULE_TYPE = UEFI_DRIVER
- VERSION_STRING = 1.1
+ VERSION_STRING = 1.2
LIBRARY_CLASS = ShellLib|UEFI_APPLICATION UEFI_DRIVER DXE_RUNTIME_DRIVER DXE_DRIVER
CONSTRUCTOR = ShellLibConstructor
DESTRUCTOR = ShellLibDestructor
diff --git a/ShellPkg/Include/Library/ShellLib.h b/ShellPkg/Include/Library/ShellLib.h
index e360a67ac751..92fddc50f5dd 100644
--- a/ShellPkg/Include/Library/ShellLib.h
+++ b/ShellPkg/Include/Library/ShellLib.h
@@ -89,7 +89,6 @@ ShellSetFileInfo (
@param[in, out] FilePath On input, the device path to the file. On output,
the remaining device path.
- @param[out] DeviceHandle Pointer to the system device handle.
@param[out] FileHandle Pointer to the file handle.
@param[in] OpenMode The mode to open the file with.
@param[in] Attributes The file's file attributes.
@@ -115,7 +114,6 @@ EFI_STATUS
EFIAPI
ShellOpenFileByDevicePath(
IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath,
- OUT EFI_HANDLE *DeviceHandle,
OUT SHELL_FILE_HANDLE *FileHandle,
IN UINT64 OpenMode,
IN UINT64 Attributes
diff --git a/ShellPkg/Library/UefiShellLib/UefiShellLib.c b/ShellPkg/Library/UefiShellLib/UefiShellLib.c
index 3c24ba1742bf..18c3be4a8bc7 100644
--- a/ShellPkg/Library/UefiShellLib/UefiShellLib.c
+++ b/ShellPkg/Library/UefiShellLib/UefiShellLib.c
@@ -472,7 +472,6 @@ ShellSetFileInfo (
@param FilePath on input the device path to the file. On output
the remaining device path.
- @param DeviceHandle pointer to the system device handle.
@param FileHandle pointer to the file handle.
@param OpenMode the mode to open the file with.
@param Attributes the file's file attributes.
@@ -498,7 +497,6 @@ EFI_STATUS
EFIAPI
ShellOpenFileByDevicePath(
IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath,
- OUT EFI_HANDLE *DeviceHandle,
OUT SHELL_FILE_HANDLE *FileHandle,
IN UINT64 OpenMode,
IN UINT64 Attributes
@@ -511,8 +509,9 @@ ShellOpenFileByDevicePath(
EFI_FILE_PROTOCOL *Handle2;
CHAR16 *FnafPathName;
UINTN PathLen;
+ EFI_HANDLE DeviceHandle;
- if (FilePath == NULL || FileHandle == NULL || DeviceHandle == NULL) {
+ if (FilePath == NULL || FileHandle == NULL) {
return (EFI_INVALID_PARAMETER);
}
@@ -538,11 +537,11 @@ ShellOpenFileByDevicePath(
//
Status = gBS->LocateDevicePath (&gEfiSimpleFileSystemProtocolGuid,
FilePath,
- DeviceHandle);
+ &DeviceHandle);
if (EFI_ERROR (Status)) {
return Status;
}
- Status = gBS->OpenProtocol(*DeviceHandle,
+ Status = gBS->OpenProtocol(DeviceHandle,
&gEfiSimpleFileSystemProtocolGuid,
(VOID**)&EfiSimpleFileSystemProtocol,
gImageHandle,
@@ -690,7 +689,6 @@ ShellOpenFileByName(
IN UINT64 Attributes
)
{
- EFI_HANDLE DeviceHandle;
EFI_DEVICE_PATH_PROTOCOL *FilePath;
EFI_STATUS Status;
EFI_FILE_INFO *FileInfo;
@@ -774,7 +772,6 @@ ShellOpenFileByName(
FilePath = mEfiShellEnvironment2->NameToPath ((CHAR16*)FileName);
if (FilePath != NULL) {
return (ShellOpenFileByDevicePath(&FilePath,
- &DeviceHandle,
FileHandle,
OpenMode,
Attributes));
--
2.14.1.3.gb7cf6e02401b
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
On 8/3/2018 8:15 PM, Laszlo Ersek wrote: > The ShellOpenFileByDevicePath() API promises to set the DeviceHandle > output parameter to the handle of the filesystem identified by the > FilePath input parameter. However, this doesn't actually happen when the > UEFI Shell 2.0 method is used (which is basically "always" nowadays). > > Accordingly, the only caller of ShellOpenFileByDevicePath(), namely > ShellOpenFileByName(), defines a (dummy) local DeviceHandle variable just > so it can call ShellOpenFileByDevicePath(). > > Remove the useless output parameter. > > Cc: Jaben Carsey <jaben.carsey@intel.com> > Cc: Ruiyu Ni <ruiyu.ni@intel.com> > Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1008 > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Laszlo Ersek <lersek@redhat.com> > Reviewed-by: Jaben Carsey <jaben.carsey@intel.com> > --- > > Notes: > v2: > - pick up Jaben's R-b > > ShellPkg/Library/UefiShellLib/UefiShellLib.inf | 2 +- > ShellPkg/Include/Library/ShellLib.h | 2 -- > ShellPkg/Library/UefiShellLib/UefiShellLib.c | 11 ++++------- > 3 files changed, 5 insertions(+), 10 deletions(-) > > diff --git a/ShellPkg/Library/UefiShellLib/UefiShellLib.inf b/ShellPkg/Library/UefiShellLib/UefiShellLib.inf > index 0df632378fe6..38d9a4b81f5f 100644 > --- a/ShellPkg/Library/UefiShellLib/UefiShellLib.inf > +++ b/ShellPkg/Library/UefiShellLib/UefiShellLib.inf > @@ -19,7 +19,7 @@ [Defines] > BASE_NAME = UefiShellLib > FILE_GUID = 449D0F00-2148-4a43-9836-F10B3980ECF5 > MODULE_TYPE = UEFI_DRIVER > - VERSION_STRING = 1.1 > + VERSION_STRING = 1.2 > LIBRARY_CLASS = ShellLib|UEFI_APPLICATION UEFI_DRIVER DXE_RUNTIME_DRIVER DXE_DRIVER > CONSTRUCTOR = ShellLibConstructor > DESTRUCTOR = ShellLibDestructor > diff --git a/ShellPkg/Include/Library/ShellLib.h b/ShellPkg/Include/Library/ShellLib.h > index e360a67ac751..92fddc50f5dd 100644 > --- a/ShellPkg/Include/Library/ShellLib.h > +++ b/ShellPkg/Include/Library/ShellLib.h > @@ -89,7 +89,6 @@ ShellSetFileInfo ( > > @param[in, out] FilePath On input, the device path to the file. On output, > the remaining device path. > - @param[out] DeviceHandle Pointer to the system device handle. > @param[out] FileHandle Pointer to the file handle. > @param[in] OpenMode The mode to open the file with. > @param[in] Attributes The file's file attributes. > @@ -115,7 +114,6 @@ EFI_STATUS > EFIAPI > ShellOpenFileByDevicePath( > IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath, > - OUT EFI_HANDLE *DeviceHandle, > OUT SHELL_FILE_HANDLE *FileHandle, > IN UINT64 OpenMode, > IN UINT64 Attributes > diff --git a/ShellPkg/Library/UefiShellLib/UefiShellLib.c b/ShellPkg/Library/UefiShellLib/UefiShellLib.c > index 3c24ba1742bf..18c3be4a8bc7 100644 > --- a/ShellPkg/Library/UefiShellLib/UefiShellLib.c > +++ b/ShellPkg/Library/UefiShellLib/UefiShellLib.c > @@ -472,7 +472,6 @@ ShellSetFileInfo ( > > @param FilePath on input the device path to the file. On output > the remaining device path. > - @param DeviceHandle pointer to the system device handle. > @param FileHandle pointer to the file handle. > @param OpenMode the mode to open the file with. > @param Attributes the file's file attributes. > @@ -498,7 +497,6 @@ EFI_STATUS > EFIAPI > ShellOpenFileByDevicePath( > IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath, > - OUT EFI_HANDLE *DeviceHandle, > OUT SHELL_FILE_HANDLE *FileHandle, > IN UINT64 OpenMode, > IN UINT64 Attributes > @@ -511,8 +509,9 @@ ShellOpenFileByDevicePath( > EFI_FILE_PROTOCOL *Handle2; > CHAR16 *FnafPathName; > UINTN PathLen; > + EFI_HANDLE DeviceHandle; > > - if (FilePath == NULL || FileHandle == NULL || DeviceHandle == NULL) { > + if (FilePath == NULL || FileHandle == NULL) { > return (EFI_INVALID_PARAMETER); > } > > @@ -538,11 +537,11 @@ ShellOpenFileByDevicePath( > // > Status = gBS->LocateDevicePath (&gEfiSimpleFileSystemProtocolGuid, > FilePath, > - DeviceHandle); > + &DeviceHandle); > if (EFI_ERROR (Status)) { > return Status; > } > - Status = gBS->OpenProtocol(*DeviceHandle, > + Status = gBS->OpenProtocol(DeviceHandle, > &gEfiSimpleFileSystemProtocolGuid, > (VOID**)&EfiSimpleFileSystemProtocol, > gImageHandle, > @@ -690,7 +689,6 @@ ShellOpenFileByName( > IN UINT64 Attributes > ) > { > - EFI_HANDLE DeviceHandle; > EFI_DEVICE_PATH_PROTOCOL *FilePath; > EFI_STATUS Status; > EFI_FILE_INFO *FileInfo; > @@ -774,7 +772,6 @@ ShellOpenFileByName( > FilePath = mEfiShellEnvironment2->NameToPath ((CHAR16*)FileName); > if (FilePath != NULL) { > return (ShellOpenFileByDevicePath(&FilePath, > - &DeviceHandle, > FileHandle, > OpenMode, > Attributes)); > Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> -- Thanks, Ray _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
© 2016 - 2024 Red Hat, Inc.