diff --git a/pw_kvs/flash_memory.cc b/pw_kvs/flash_memory.cc
index 1bcacf6..8424496 100644
--- a/pw_kvs/flash_memory.cc
+++ b/pw_kvs/flash_memory.cc
@@ -105,24 +105,25 @@
 
   // TODO(pwbug/214): Currently using a single flash alignment to do both the
   // read and write. The allowable flash read length may be less than what write
-  // needs (possibly by a bunch), resulting in buffer and erased_pattern_buffer
-  // being bigger than they need to be.
+  // needs (possibly by a bunch), resulting in read_buffer and
+  // erased_pattern_buffer being bigger than they need to be.
   const size_t alignment = alignment_bytes();
   if (alignment > kMaxFlashAlignment || kMaxFlashAlignment % alignment ||
       length % alignment) {
     return Status::InvalidArgument();
   }
 
-  byte buffer[kMaxFlashAlignment];
+  byte read_buffer[kMaxFlashAlignment];
   const byte erased_byte = flash_.erased_memory_content();
   size_t offset = 0;
   *is_erased = false;
   while (length > 0u) {
     // Check earlier that length is aligned, no need to round up
-    size_t read_size = std::min(sizeof(buffer), length);
-    PW_TRY(Read(source_flash_address + offset, read_size, buffer).status());
+    size_t read_size = std::min(sizeof(read_buffer), length);
+    PW_TRY(
+        Read(source_flash_address + offset, read_size, read_buffer).status());
 
-    for (byte b : std::span(buffer, read_size)) {
+    for (byte b : std::span(read_buffer, read_size)) {
       if (b != erased_byte) {
         // Detected memory chunk is not entirely erased
         return OkStatus();
diff --git a/pw_kvs/public/pw_kvs/flash_memory.h b/pw_kvs/public/pw_kvs/flash_memory.h
index 8a3d35d0..b767386 100644
--- a/pw_kvs/public/pw_kvs/flash_memory.h
+++ b/pw_kvs/public/pw_kvs/flash_memory.h
@@ -232,7 +232,7 @@
   // UNKNOWN - HAL error
   // TODO: Result<bool>
   virtual Status IsRegionErased(Address source_flash_address,
-                                size_t len,
+                                size_t length,
                                 bool* is_erased);
 
   // Check if the entire partition is erased.
