diff --git a/src/flash/flash.c b/src/flash/flash.c
index fb9fa698b0b72d25015e86b2139e42777b57f8c9..08f3aaff563f795426a5dcfb75e5841b48714e4f 100644
--- a/src/flash/flash.c
+++ b/src/flash/flash.c
@@ -792,20 +792,16 @@ int handle_flash_fill_command(struct command_context_s *cmd_ctx, char *cmd, char
 	for (wrote=0; wrote<(count*wordsize); wrote+=sizeof(chunk))
 	{
 		int cur_size = MIN( (count*wordsize - wrote) , 1024 );
-		if (err == ERROR_OK)
+		flash_bank_t *bank;
+		bank = get_flash_bank_by_addr(target, address);
+		if(bank == NULL)
 		{
-			flash_bank_t *bank;
-			bank = get_flash_bank_by_addr(target, address);
-			if(bank == NULL)
-			{
-				err = ERROR_FAIL;
-				break;
-			}
-			err = flash_driver_write(bank, chunk, address - bank->base + wrote, cur_size);
-			wrote += cur_size;
+			return ERROR_FAIL;
 		}
+		err = flash_driver_write(bank, chunk, address - bank->base + wrote, cur_size);
 		if (err!=ERROR_OK)
-			break;
+			return err;
+		wrote += cur_size;
 	}
 
 	if ((retval = duration_stop_measure(&duration, &duration_text)) != ERROR_OK)