efi_selftest: memory leak testing manage protocols
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sun, 26 Aug 2018 12:58:16 +0000 (14:58 +0200)
committerAlexander Graf <agraf@suse.de>
Sun, 23 Sep 2018 19:55:28 +0000 (21:55 +0200)
Remove memory leak in efi_selftest_manageprotocols.c.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
lib/efi_selftest/efi_selftest_manageprotocols.c

index 44b8da3..b09e4cd 100644 (file)
@@ -179,7 +179,12 @@ static int execute(void)
                efi_st_error("LocateHandleBuffer failed to locate new handle\n");
                return EFI_ST_FAILURE;
        }
-       boottime->set_mem(buffer, sizeof(efi_handle_t) * buffer_size, 0);
+       /* Release buffer */
+       ret = boottime->free_pool(buffer);
+       if (ret != EFI_SUCCESS) {
+               efi_st_error("FreePool failed\n");
+               return EFI_ST_FAILURE;
+       }
 
        /*
         * Test error handling in UninstallMultipleProtocols
@@ -221,6 +226,7 @@ static int execute(void)
                efi_st_error("LocateHandleBuffer failed to locate new handle\n");
                return EFI_ST_FAILURE;
        }
+       /* Clear the buffer, we are reusing it it the next step. */
        boottime->set_mem(buffer, sizeof(efi_handle_t) * buffer_size, 0);
 
        /*
@@ -248,7 +254,12 @@ static int execute(void)
                efi_st_error("LocateHandle failed to locate new handles\n");
                return EFI_ST_FAILURE;
        }
-       boottime->set_mem(buffer, sizeof(efi_handle_t) * buffer_size, 0);
+       /* Release buffer */
+       ret = boottime->free_pool(buffer);
+       if (ret != EFI_SUCCESS) {
+               efi_st_error("FreePool failed\n");
+               return EFI_ST_FAILURE;
+       }
 
        /*
         * Test LocateProtocol
@@ -319,6 +330,12 @@ static int execute(void)
                efi_st_error("Failed to get protocols per handle\n");
                return EFI_ST_FAILURE;
        }
+       /* Release buffer */
+       ret = boottime->free_pool(prot_buffer);
+       if (ret != EFI_SUCCESS) {
+               efi_st_error("FreePool failed\n");
+               return EFI_ST_FAILURE;
+       }
 
        /*
         * Uninstall remaining protocols