ANDROID: dm verity fec: fix RS block calculation
authorSami Tolvanen <samitolvanen@google.com>
Fri, 17 Jun 2016 18:22:03 +0000 (11:22 -0700)
committerAmit Pundir <amit.pundir@linaro.org>
Mon, 11 Jul 2016 07:11:28 +0000 (12:41 +0530)
A call to do_div was changed in Linux 4.5 to div64_u64 in
verity_fec_decode, which broke RS block calculation due to
incompatible semantics. This change fixes the computation.

Bug: 21893453
Change-Id: Idb88b901e0209c2cccc9c0796689f780592d58f9
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
(cherry picked from commit 879aac93eebcc2862d71afa9eca3a0c0f51b3b01)

drivers/md/dm-verity-fec.c

index 454535d23a7f4b5eab481632d643185fbb60cd4d..a1e8571ce314507affdb336e26be178c4907fed6 100644 (file)
@@ -463,9 +463,7 @@ int verity_fec_decode(struct dm_verity *v, struct dm_verity_io *io,
         */
 
        offset = block << v->data_dev_block_bits;
-
-       res = offset;
-       div64_u64(res, v->fec->rounds << v->data_dev_block_bits);
+       res = div64_u64(offset, v->fec->rounds << v->data_dev_block_bits);
 
        /*
         * The base RS block we can feed to the interleaver to find out all