Commit bd5a63d5 authored by Artem Bityutskiy's avatar Artem Bityutskiy Committed by Luis Henriques

UBIFS: fix free log space calculation

commit ba29e721 upstream.

Hu (hujianyang <hujianyang@huawei.com>) discovered an issue in the
'empty_log_bytes()' function, which calculates how many bytes are left in the
log:

"
If 'c->lhead_lnum + 1 == c->ltail_lnum' and 'c->lhead_offs == c->leb_size', 'h'
would equalent to 't' and 'empty_log_bytes()' would return 'c->log_bytes'
instead of 0.
"

At this point it is not clear what would be the consequences of this, and
whether this may lead to any problems, but this patch addresses the issue just
in case.
Tested-by: default avatarhujianyang <hujianyang@huawei.com>
Reported-by: default avatarhujianyang <hujianyang@huawei.com>
Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
parent ba82b50b
...@@ -106,10 +106,14 @@ static inline long long empty_log_bytes(const struct ubifs_info *c) ...@@ -106,10 +106,14 @@ static inline long long empty_log_bytes(const struct ubifs_info *c)
h = (long long)c->lhead_lnum * c->leb_size + c->lhead_offs; h = (long long)c->lhead_lnum * c->leb_size + c->lhead_offs;
t = (long long)c->ltail_lnum * c->leb_size; t = (long long)c->ltail_lnum * c->leb_size;
if (h >= t) if (h > t)
return c->log_bytes - h + t; return c->log_bytes - h + t;
else else if (h != t)
return t - h; return t - h;
else if (c->lhead_lnum != c->ltail_lnum)
return 0;
else
return c->log_bytes;
} }
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment