mtd: bcm47xxpart: fix parsing first block after aligned TRX
authorRafał Miłecki <rafal@milecki.pl>
Sun, 20 Nov 2016 15:09:30 +0000 (16:09 +0100)
committerBrian Norris <computersforpeace@gmail.com>
Tue, 22 Nov 2016 19:09:48 +0000 (11:09 -0800)
After parsing TRX we should skip to the first block placed behind it.
Our code was working only with TRX with length not aligned to the
blocksize. In other cases (length aligned) it was missing the block
places right after TRX.

This fixes calculation and simplifies the comment.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/bcm47xxpart.c

index 377947580203d295553029097607964ec850551c..283ff7e17a0febd24de519fdd1991ce351d214e7 100644 (file)
@@ -229,12 +229,10 @@ static int bcm47xxpart_parse(struct mtd_info *master,
 
                        last_trx_part = curr_part - 1;
 
-                       /*
-                        * We have whole TRX scanned, skip to the next part. Use
-                        * roundown (not roundup), as the loop will increase
-                        * offset in next step.
-                        */
-                       offset = rounddown(offset + trx->length, blocksize);
+                       /* Jump to the end of TRX */
+                       offset = roundup(offset + trx->length, blocksize);
+                       /* Next loop iteration will increase the offset */
+                       offset -= blocksize;
                        continue;
                }