diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
index 4a8804e4b70789df280863dfb88fed3508ae79bd..cccc04417a040c7dc4f920d46e3688fc6efe5561 100644
--- a/drivers/dfu/dfu.c
+++ b/drivers/dfu/dfu.c
@@ -229,6 +229,7 @@ static int dfu_read_buffer_fill(struct dfu_entity *dfu, void *buf, int size)
 			dfu->crc = crc32(dfu->crc, buf, chunk);
 			dfu->i_buf += chunk;
 			dfu->b_left -= chunk;
+			dfu->r_left -= chunk;
 			size -= chunk;
 			buf += chunk;
 			readn += chunk;