pstore/ram: Include ecc_size when calculating ecc_block
authorArve Hjønnevåg <arve@android.com>
Tue, 20 Mar 2012 23:01:31 +0000 (16:01 -0700)
committerAnton Vorontsov <anton@enomsg.org>
Thu, 4 Apr 2013 04:49:28 +0000 (21:49 -0700)
Wastes less memory and allows using more memory for ecc than data.

Signed-off-by: Arve Hjønnevåg <arve@android.com>
[jstultz: Tweaked commit subject]
Signed-off-by: John Stultz <john.stultz@linaro.org>
Acked-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Anton Vorontsov <anton@enomsg.org>
fs/pstore/ram_core.c

index 0306303..e5afa22 100644 (file)
@@ -187,7 +187,8 @@ static int persistent_ram_init_ecc(struct persistent_ram_zone *prz,
        prz->ecc_block_size = 128;
        prz->ecc_size = ecc_size;
 
-       ecc_blocks = DIV_ROUND_UP(prz->buffer_size, prz->ecc_block_size);
+       ecc_blocks = DIV_ROUND_UP(prz->buffer_size - prz->ecc_size,
+                                 prz->ecc_block_size + prz->ecc_size);
        ecc_total = (ecc_blocks + 1) * prz->ecc_size;
        if (ecc_total >= prz->buffer_size) {
                pr_err("%s: invalid ecc_size %u (total %zu, buffer size %zu)\n",