Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ba29e721 authored by Artem Bityutskiy's avatar Artem Bityutskiy
Browse files

UBIFS: fix free log space calculation



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.

Cc: stable@vger.kernel.org
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>
parent 052c2807
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -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;
}
}


/**
/**