Hi Sahil,
Thank you for this patch.
I have a minor suggession marked inline as [SAMI].
Otherwise this patch looks good to me.
Reviewed-by: Sami Mujawar <sami.muja...@arm.com>
Regards,
Sami Mujawar
On 23/05/2024 11:55 am, Sahil Kaushal wrote:
From: sahil<sa...@arm.com>
This patch adds error_handler1 and error_handler2 labels in
NorFlashCreateInstance() function to handle the cleanup.
error_handler1: Frees just the Instance structure as the
ShadowBuffer is not allocated yet.
error_handler2: Frees both Instance and Instance->ShadowBuffer.
Signed-off-by: sahil<sa...@arm.com>
---
Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c | 18
+++++++++++++-----
Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c | 19
++++++++++++++-----
2 files changed, 27 insertions(+), 10 deletions(-)
diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c
b/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c
index e01b05d91978..fd47bd9e4c63 100644
--- a/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c
+++ b/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c
@@ -135,7 +135,8 @@ NorFlashCreateInstance (
Instance->ShadowBuffer = AllocateRuntimePool (BlockSize);
if (Instance->ShadowBuffer == NULL) {
- return EFI_OUT_OF_RESOURCES;
+ Status = EFI_OUT_OF_RESOURCES;
+ goto error_handler1;
}
if (SupportFvb) {
@@ -152,8 +153,7 @@ NorFlashCreateInstance (
NULL
);
if (EFI_ERROR (Status)) {
- FreePool (Instance);
- return Status;
+ goto error_handler2;
}
} else {
Status = gBS->InstallMultipleProtocolInterfaces (
@@ -167,12 +167,20 @@ NorFlashCreateInstance (
NULL
);
if (EFI_ERROR (Status)) {
- FreePool (Instance);
- return Status;
+ goto error_handler2;
}
}
*NorFlashInstance = Instance;
[SNIP]
+ return EFI_SUCCESS;
+
+error_handler1:
+ FreePool (Instance);
+ return Status;
+
+error_handler2:
+ FreePool (Instance->ShadowBuffer);
+ FreePool (Instance);
return Status;
[/SNIP]
[SAMI] I think the above code can be simplified as below:
---
+ return Status;
+
+error_handler2:
+ FreePool (Instance->ShadowBuffer);
+error_handler2:
+ FreePool (Instance);
return Status;
---
A similar change is reuired later in this patch below.
If you agree, I will fix this up before merging the patch.
[/SAMI]
}
diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c
b/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c
index 16fe3762e125..17dfe26627dd 100644
--- a/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c
+++ b/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c
@@ -129,7 +129,8 @@ NorFlashCreateInstance (
Instance->ShadowBuffer = AllocateRuntimePool (BlockSize);
if (Instance->ShadowBuffer == NULL) {
- return EFI_OUT_OF_RESOURCES;
+ Status = EFI_OUT_OF_RESOURCES;
+ goto error_handler1;
}
if (SupportFvb) {
@@ -142,16 +143,24 @@ NorFlashCreateInstance (
&Instance->FvbProtocol
);
if (EFI_ERROR (Status)) {
- FreePool (Instance);
- return Status;
+ goto error_handler2;
}
} else {
DEBUG ((DEBUG_ERROR, "standalone MM NOR Flash driver only support
FVB.\n"));
- FreePool (Instance);
- return EFI_UNSUPPORTED;
+ Status = EFI_UNSUPPORTED;
+ goto error_handler2;
}
*NorFlashInstance = Instance;
+ return EFI_SUCCESS;
+
+error_handler1:
+ FreePool (Instance);
+ return Status;
+
+error_handler2:
+ FreePool (Instance->ShadowBuffer);
+ FreePool (Instance);
return Status;
}
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#119164): https://edk2.groups.io/g/devel/message/119164
Mute This Topic: https://groups.io/mt/106260149/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-