From: DmitryShpak Date: Wed, 25 Mar 2015 11:31:16 +0000 (+0300) Subject: target/target.c: fixed rp check bug in asynchronous flash write algorithm. X-Git-Tag: v0.9.0-rc1~67 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=d3c2679bcb8e8ba25e7b6e443b39f57474afc099 target/target.c: fixed rp check bug in asynchronous flash write algorithm. Bug in read pointer check within flash write algorithm made incorrect check if block size is more than 4 bytes (bug was detected with 16 bytes block size). Change-Id: I5b8e7ebca619a0a85ae6e9e496ff792248134d81 Signed-off-by: DmitryShpak Reviewed-on: http://openocd.zylin.com/2657 Tested-by: jenkins Reviewed-by: Jens Bauer Reviewed-by: Andreas Fritiofson --- diff --git a/src/target/target.c b/src/target/target.c index a8d3cba96f..8a7547b8a7 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -938,7 +938,7 @@ int target_run_flash_async_algorithm(struct target *target, break; } - if ((rp & (block_size - 1)) || rp < fifo_start_addr || rp >= fifo_end_addr) { + if (((rp - fifo_start_addr) & (block_size - 1)) || rp < fifo_start_addr || rp >= fifo_end_addr) { LOG_ERROR("corrupted fifo read pointer 0x%" PRIx32, rp); break; }