diff --git a/src/target/target.c b/src/target/target.c
index 68fad2fe89194c8f1d12e4bd9f30da2ae3ab6fab..a0cbf85c57cef729134eef0f75736d2575ec8d95 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -2158,10 +2158,10 @@ static int handle_dump_image_command(struct command_context_s *cmd_ctx, char *cm
 	if (retval==ERROR_OK)
 	{
 		command_print(cmd_ctx, "dumped %"PRIi64" byte in %s", fileio.size, duration_text);
+		free(duration_text);
 	}
-	free(duration_text);
 
-	return ERROR_OK;
+	return retval;
 }
 
 static int handle_verify_image_command_internal(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, int verify)