]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[efi] Avoid unnecessarily passing pointers to EFI_HANDLEs
authorMichael Brown <mcb30@ipxe.org>
Thu, 31 Jul 2014 11:22:40 +0000 (12:22 +0100)
committerMichael Brown <mcb30@ipxe.org>
Thu, 31 Jul 2014 11:50:09 +0000 (12:50 +0100)
efi_file_install() and efi_download_install() are both used to install
onto existing handles.  There is therefore no need to allow for each
of their calls to InstallMultipleProtocolInterfaces() to create a new
handle.

By passing the handle directly (rather than a pointer to the handle),
we avoid potential confusion (and erroneous debug message colours).

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/image/efi_image.c
src/include/ipxe/efi/efi_download.h
src/include/ipxe/efi/efi_file.h
src/interface/efi/efi_download.c
src/interface/efi/efi_file.c

index 02ff8b2f8c58e9dd37e6e4c89a144ceb017d5da0..45a68e530d289a266a236f42c880a02f7e05e2a9 100644 (file)
@@ -157,14 +157,14 @@ static int efi_image_exec ( struct image *image ) {
        }
 
        /* Install file I/O protocols */
-       if ( ( rc = efi_file_install ( &snpdev->handle ) ) != 0 ) {
+       if ( ( rc = efi_file_install ( snpdev->handle ) ) != 0 ) {
                DBGC ( image, "EFIIMAGE %p could not install file protocol: "
                       "%s\n", image, strerror ( rc ) );
                goto err_file_install;
        }
 
        /* Install iPXE download protocol */
-       if ( ( rc = efi_download_install ( &snpdev->handle ) ) != 0 ) {
+       if ( ( rc = efi_download_install ( snpdev->handle ) ) != 0 ) {
                DBGC ( image, "EFIIMAGE %p could not install iPXE download "
                       "protocol: %s\n", image, strerror ( rc ) );
                goto err_download_install;
index 3ce4972219b92f66bc7c931bafedee6c3f023406..740fcadf5fa711b346e57076d725ac0989f072cf 100644 (file)
@@ -151,7 +151,7 @@ struct _IPXE_DOWNLOAD_PROTOCOL {
     0x3eaeaebd, 0xdecf, 0x493b, { 0x9b, 0xd1, 0xcd, 0xb2, 0xde, 0xca, 0xe7, 0x19 } \
   }
 
-extern int efi_download_install ( EFI_HANDLE *device );
-extern void efi_download_uninstall ( EFI_HANDLE device );
+extern int efi_download_install ( EFI_HANDLE handle );
+extern void efi_download_uninstall ( EFI_HANDLE handle );
 
 #endif /* _IPXE_DOWNLOAD_H */
index 0d75cf5b004817164a04ecc8306002d4188a3ace..e4db0305a8b83708316614fc4f6a9047e3f3f94a 100644 (file)
@@ -7,7 +7,7 @@
  *
  */
 
-extern int efi_file_install ( EFI_HANDLE *handle );
+extern int efi_file_install ( EFI_HANDLE handle );
 extern void efi_file_uninstall ( EFI_HANDLE handle );
 
 #endif /* _IPXE_EFI_FILE_H */
index 522276ace732372c087654bc062f843ad39dd64e..1218852e2f41459c702a46b3e7c4a47599da111f 100644 (file)
@@ -205,13 +205,13 @@ static IPXE_DOWNLOAD_PROTOCOL ipxe_download_protocol_interface = {
  * @v handle           EFI handle
  * @ret rc             Return status code
  */
-int efi_download_install ( EFI_HANDLE *handle ) {
+int efi_download_install ( EFI_HANDLE handle ) {
        EFI_BOOT_SERVICES *bs = efi_systab->BootServices;
        EFI_STATUS efirc;
        int rc;
 
        efirc = bs->InstallMultipleProtocolInterfaces (
-                       handle,
+                       &handle,
                        &ipxe_download_protocol_guid,
                        &ipxe_download_protocol_interface,
                        NULL );
index f8713750ca435472ea2b801eda706bd2ce763871..aafc781afe27b6cdda6c2e576a58465881972332 100644 (file)
@@ -575,7 +575,7 @@ static EFI_DISK_IO_PROTOCOL efi_disk_io_protocol = {
  * @v handle           EFI handle
  * @ret rc             Return status code
  */
-int efi_file_install ( EFI_HANDLE *handle ) {
+int efi_file_install ( EFI_HANDLE handle ) {
        EFI_BOOT_SERVICES *bs = efi_systab->BootServices;
        union {
                EFI_DISK_IO_PROTOCOL *diskio;
@@ -592,7 +592,7 @@ int efi_file_install ( EFI_HANDLE *handle ) {
         * handle just to keep things looking normal.
         */
        if ( ( efirc = bs->InstallMultipleProtocolInterfaces (
-                       handle,
+                       &handle,
                        &efi_block_io_protocol_guid,
                        &efi_block_io_protocol,
                        &efi_disk_io_protocol_guid,
@@ -624,9 +624,9 @@ int efi_file_install ( EFI_HANDLE *handle ) {
         * of calls to our DRIVER_STOP method when starting the EFI
         * shell.  I have no idea why this is.
         */
-       if ( ( efirc = bs->OpenProtocol ( *handle, &efi_disk_io_protocol_guid,
+       if ( ( efirc = bs->OpenProtocol ( handle, &efi_disk_io_protocol_guid,
                                          &diskio.interface, efi_image_handle,
-                                         *handle,
+                                         handle,
                                          EFI_OPEN_PROTOCOL_BY_DRIVER ) ) != 0){
                rc = -EEFI ( efirc );
                DBGC ( handle, "Could not open disk I/O protocol: %s\n",
@@ -637,11 +637,11 @@ int efi_file_install ( EFI_HANDLE *handle ) {
 
        return 0;
 
-       bs->CloseProtocol ( *handle, &efi_disk_io_protocol_guid,
-                           efi_image_handle, *handle );
+       bs->CloseProtocol ( handle, &efi_disk_io_protocol_guid,
+                           efi_image_handle, handle );
  err_open:
        bs->UninstallMultipleProtocolInterfaces (
-                       *handle,
+                       handle,
                        &efi_simple_file_system_protocol_guid,
                        &efi_simple_file_system_protocol,
                        &efi_disk_io_protocol_guid,