diff --git a/drivers/firmware/broadcom/bcm47xx_nvram.c b/drivers/firmware/broadcom/bcm47xx_nvram.c
index 09f51b95849e590d922bb7edf77b23e27457d615..1d2271b1e07a26ea66081a956999623ac351b311 100644
--- a/drivers/firmware/broadcom/bcm47xx_nvram.c
+++ b/drivers/firmware/broadcom/bcm47xx_nvram.c
@@ -93,15 +93,13 @@ static int bcm47xx_nvram_find_and_copy(void __iomem *flash_start, size_t res_siz
 	}
 
 	/* TODO: when nvram is on nand flash check for bad blocks first. */
-	flash_size = FLASH_MIN;
-	while (flash_size <= res_size) {
+	for (flash_size = FLASH_MIN; flash_size <= res_size; flash_size <<= 1) {
 		/* Windowed flash access */
 		size = find_nvram_size(flash_start + flash_size);
 		if (size) {
 			offset = flash_size - size;
 			goto found;
 		}
-		flash_size <<= 1;
 	}
 
 	/* Try embedded NVRAM at 4 KB and 1 KB as last resorts */