Patchwork UBIFS: fix the dark space calculation

login
register
mail settings
Submitter srimugunthan dhandapani
Date Aug. 26, 2011, 10:38 a.m.
Message ID <CAMjNe_fj+FQSV9fX-sjh3hdW-CTNaqwmnS+36if6NcvLtpxOKw@mail.gmail.com>
Download mbox | patch
Permalink /patch/111743/
State New
Headers show

Comments

srimugunthan dhandapani - Aug. 26, 2011, 10:38 a.m.
hi,
The dark space calculation should be 64 bit type-casted ,when
assigning to tmp64( similar to how total_free is calculated).
Overflow will occur for very large flashes.

Signed-off-by: srimugunthan <srimugunthan.dhandapani@gmail.com>
---
--
Artem Bityutskiy - Sept. 11, 2011, 11:10 a.m.
On Fri, 2011-08-26 at 16:08 +0530, srimugunthan dhandapani wrote:
> hi,
> The dark space calculation should be 64 bit type-casted ,when
> assigning to tmp64( similar to how total_free is calculated).
> Overflow will occur for very large flashes.

The patch did not apply to the latest UBIFS, but I have amended it.
Pushed to ubifs-2.6.git, thanks!

Patch

diff --git a/fs/ubifs/sb.c b/fs/ubifs/sb.c
index 93d938a..6094c5a 100644
--- a/fs/ubifs/sb.c
+++ b/fs/ubifs/sb.c
@@ -247,7 +247,7 @@  static int create_default_filesystem(struct ubifs_info *c)
        mst->total_dirty = cpu_to_le64(tmp64);

        /*  The indexing LEB does not contribute to dark space */
-       tmp64 = (c->main_lebs - 1) * c->dark_wm;
+       tmp64 = ((long long)(c->main_lebs - 1) * c->dark_wm);
        mst->total_dark = cpu_to_le64(tmp64);

        mst->total_used = cpu_to_le64(UBIFS_INO_NODE_SZ);