efi_selftest: reduce noise in test output for device trees

Some messages are only useful if an error occurs.
Fix a use after free.
Add a missing free.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
diff --git a/lib/efi_selftest/efi_selftest_devicepath.c b/lib/efi_selftest/efi_selftest_devicepath.c
index 2f8f3c7..92940c7 100644
--- a/lib/efi_selftest/efi_selftest_devicepath.c
+++ b/lib/efi_selftest/efi_selftest_devicepath.c
@@ -319,7 +319,6 @@
 		efi_st_error("FreePool failed\n");
 		return EFI_ST_FAILURE;
 	}
-	efi_st_printf("\n");
 
 	/* Test ConvertDevicePathToText */
 	string = device_path_to_text->convert_device_path_to_text(
@@ -328,15 +327,14 @@
 		efi_st_error("ConvertDevicePathToText failed\n");
 		return EFI_ST_FAILURE;
 	}
-	efi_st_printf("dp2: %ps\n", string);
 	if (efi_st_strcmp_16_8(
 		string,
 		"/VenHw(dbca4c98-6cb0-694d-0872-819c650cbbb1)/VenHw(dbca4c98-6cb0-694d-0872-819c650cbba2)")
 	    ) {
+		efi_st_printf("dp2: %ps\n", string);
 		efi_st_error("Incorrect text from ConvertDevicePathToText\n");
 		return EFI_ST_FAILURE;
 	}
-
 	ret = boottime->free_pool(string);
 	if (ret != EFI_SUCCESS) {
 		efi_st_error("FreePool failed\n");
@@ -350,17 +348,17 @@
 		efi_st_error("ConvertDeviceNodeToText failed\n");
 		return EFI_ST_FAILURE;
 	}
-	efi_st_printf("dp_node: %ps\n", string);
-	ret = boottime->free_pool(string);
-	if (ret != EFI_SUCCESS) {
-		efi_st_error("FreePool failed\n");
-		return EFI_ST_FAILURE;
-	}
 	if (efi_st_strcmp_16_8(string, "u-boot")) {
+		efi_st_printf("dp_node: %ps\n", string);
 		efi_st_error(
 			"Incorrect conversion by ConvertDeviceNodeToText\n");
 		return EFI_ST_FAILURE;
 	}
+	ret = boottime->free_pool(string);
+	if (ret != EFI_SUCCESS) {
+		efi_st_error("FreePool failed\n");
+		return EFI_ST_FAILURE;
+	}
 
 	/* Test LocateDevicePath */
 	remaining_dp = (struct efi_device_path *)dp3;
@@ -380,13 +378,18 @@
 		efi_st_error("ConvertDevicePathToText failed\n");
 		return EFI_ST_FAILURE;
 	}
-	efi_st_printf("remaining device path: %ps\n", string);
 	if (efi_st_strcmp_16_8(string,
 			       "/VenHw(dbca4c98-6cb0-694d-0872-819c650cbbc3)")
 	    ) {
+		efi_st_printf("remaining device path: %ps\n", string);
 		efi_st_error("LocateDevicePath: wrong remaining device path\n");
 		return EFI_ST_FAILURE;
 	}
+	ret = boottime->free_pool(string);
+	if (ret != EFI_SUCCESS) {
+		efi_st_error("FreePool failed\n");
+		return EFI_ST_FAILURE;
+	}
 
 	return EFI_ST_SUCCESS;
 }