Copyright (c) 2013-2014, ARM Ltd. All rights reserved.<BR>\r
Copyright (c) 2017, Linaro. All rights reserved.\r
\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
ASSERT (IS_VALID_ANDROID_PAGE_SIZE (Header->PageSize));\r
\r
*KernelSize = Header->KernelSize;\r
- *Kernel = BootImg + Header->PageSize;\r
+ *Kernel = (VOID *)((UINTN)BootImg + Header->PageSize);\r
return EFI_SUCCESS;\r
}\r
\r
\r
Status = AndroidBootImgSetProperty64 (UpdatedFdtBase, ChosenNode,\r
"linux,initrd-end",\r
- (UINTN)(RamdiskData + RamdiskSize));\r
+ (UINTN)RamdiskData + RamdiskSize);\r
if (EFI_ERROR (Status)) {\r
goto Fdt_Exit;\r
}\r
Status = gBS->LoadImage (TRUE, gImageHandle,\r
(EFI_DEVICE_PATH *)&KernelDevicePath,\r
(VOID*)(UINTN)Kernel, KernelSize, &ImageHandle);\r
+ if (EFI_ERROR (Status)) {\r
+ //\r
+ // With EFI_SECURITY_VIOLATION retval, the Image was loaded and an ImageHandle was created\r
+ // with a valid EFI_LOADED_IMAGE_PROTOCOL, but the image can not be started right now.\r
+ // If the caller doesn't have the option to defer the execution of an image, we should\r
+ // unload image for the EFI_SECURITY_VIOLATION to avoid resource leak.\r
+ //\r
+ if (Status == EFI_SECURITY_VIOLATION) {\r
+ gBS->UnloadImage (ImageHandle);\r
+ }\r
+ return Status;\r
+ }\r
\r
// Set kernel arguments\r
Status = gBS->HandleProtocol (ImageHandle, &gEfiLoadedImageProtocolGuid,\r