]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.c
ArmPkg/NorFlashDxe : Fix the check of flash addresses
[mirror_edk2.git] / ArmPlatformPkg / Drivers / NorFlashDxe / NorFlashDxe.c
index 5673d0bf29f85aeb4b020e34ead82bbc5d484bf2..3abbe5cb32bc2c7f44af3f014e6cb4515e022ff6 100644 (file)
@@ -525,7 +525,7 @@ NorFlashWriteBuffer (
 \r
   // Write the data to the NOR Flash, advancing each address by 4 bytes\r
   for(Count=0; Count < BufferSizeInWords; Count++, Data++, Buffer++) {\r
-    *Data = *Buffer;\r
+    MmioWrite32 ((UINTN)Data, *Buffer);\r
   }\r
 \r
   // Issue the Buffered Program Confirm command, to start the programming operation\r
@@ -805,8 +805,7 @@ NorFlashRead (
   OUT VOID                *Buffer\r
   )\r
 {\r
-  UINT32              NumBlocks;\r
-  UINTN               StartAddress;\r
+  UINTN  StartAddress;\r
 \r
   // The buffer must be valid\r
   if (Buffer == NULL) {\r
@@ -818,15 +817,7 @@ NorFlashRead (
     return EFI_SUCCESS;\r
   }\r
 \r
-  // All blocks must be within the device\r
-  NumBlocks = ((UINT32)BufferSizeInBytes) / Instance->Media.BlockSize ;\r
-\r
-  if ((Lba + NumBlocks) > (Instance->Media.LastBlock + 1)) {\r
-    DEBUG ((EFI_D_ERROR, "NorFlashRead: ERROR - Read will exceed last block\n"));\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  if (Offset + BufferSizeInBytes >= Instance->Size) {\r
+  if (((Lba * Instance->Media.BlockSize) + Offset + BufferSizeInBytes) > Instance->Size) {\r
     DEBUG ((EFI_D_ERROR, "NorFlashRead: ERROR - Read will exceed device size.\n"));\r
     return EFI_INVALID_PARAMETER;\r
   }\r