summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorArve Hjønnevåg <arve@android.com>2012-03-21 00:01:31 +0100
committerAnton Vorontsov <anton@enomsg.org>2013-04-04 06:49:28 +0200
commit422ca8608c49d1e9bfed1c58a1ca448a8a38c0ad (patch)
tree5170cd8c86c720a8ab0932def99f61eec2488bbe /fs
parentpstore: Replace calls to kmalloc and memcpy with kmemdup (diff)
downloadlinux-422ca8608c49d1e9bfed1c58a1ca448a8a38c0ad.tar.xz
linux-422ca8608c49d1e9bfed1c58a1ca448a8a38c0ad.zip
pstore/ram: Include ecc_size when calculating ecc_block
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>
Diffstat (limited to 'fs')
-rw-r--r--fs/pstore/ram_core.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/pstore/ram_core.c b/fs/pstore/ram_core.c
index 0306303be372..e5afa222c213 100644
--- a/fs/pstore/ram_core.c
+++ b/fs/pstore/ram_core.c
@@ -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",