]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashBlockIoDxe.c
ArmPlatformPkg/NorFlashDxe: depend on gEfiCpuArchProtocolGuid
[mirror_edk2.git] / ArmPlatformPkg / Drivers / NorFlashDxe / NorFlashBlockIoDxe.c
index 21fceac1dc79979cce7ee0e4f1174b97caeec9f7..279b77c75ee18e664df3195494edb559e53fc0b6 100644 (file)
@@ -1,6 +1,6 @@
 /** @file  NorFlashBlockIoDxe.c\r
 \r
 /** @file  NorFlashBlockIoDxe.c\r
 \r
-  Copyright (c) 2011-2012, ARM Ltd. All rights reserved.<BR>\r
+  Copyright (c) 2011-2013, ARM Ltd. All rights reserved.<BR>\r
 \r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
 \r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
@@ -51,17 +51,27 @@ NorFlashBlockIoReadBlocks (
 {\r
   NOR_FLASH_INSTANCE  *Instance;\r
   EFI_STATUS          Status;\r
 {\r
   NOR_FLASH_INSTANCE  *Instance;\r
   EFI_STATUS          Status;\r
+  EFI_BLOCK_IO_MEDIA  *Media;\r
+\r
+  if (This == NULL) {\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
 \r
   Instance = INSTANCE_FROM_BLKIO_THIS(This);\r
 \r
   Instance = INSTANCE_FROM_BLKIO_THIS(This);\r
+  Media = This->Media;\r
 \r
   DEBUG ((DEBUG_BLKIO, "NorFlashBlockIoReadBlocks(MediaId=0x%x, Lba=%ld, BufferSize=0x%x bytes (%d kB), BufferPtr @ 0x%08x)\n", MediaId, Lba, BufferSizeInBytes, Buffer));\r
 \r
 \r
   DEBUG ((DEBUG_BLKIO, "NorFlashBlockIoReadBlocks(MediaId=0x%x, Lba=%ld, BufferSize=0x%x bytes (%d kB), BufferPtr @ 0x%08x)\n", MediaId, Lba, BufferSizeInBytes, Buffer));\r
 \r
-  if( !This->Media->MediaPresent ) {\r
+  if (!Media) {\r
+    Status = EFI_INVALID_PARAMETER;\r
+  } else if (!Media->MediaPresent) {\r
     Status = EFI_NO_MEDIA;\r
     Status = EFI_NO_MEDIA;\r
-  } else if( This->Media->MediaId != MediaId ) {\r
+  } else if (Media->MediaId != MediaId) {\r
     Status = EFI_MEDIA_CHANGED;\r
     Status = EFI_MEDIA_CHANGED;\r
+  } else if ((Media->IoAlign > 2) && (((UINTN)Buffer & (Media->IoAlign - 1)) != 0)) {\r
+    Status = EFI_INVALID_PARAMETER;\r
   } else {\r
   } else {\r
-    Status = NorFlashReadBlocks (Instance,Lba,BufferSizeInBytes,Buffer);\r
+    Status = NorFlashReadBlocks (Instance, Lba, BufferSizeInBytes, Buffer);\r
   }\r
 \r
   return Status;\r
   }\r
 \r
   return Status;\r