Re: [PATCH] UBIFS: fix assertion in layout_in_gaps()

From: Richard Weinberger
Date: Sun Aug 14 2016 - 05:00:38 EST


Vincent,

On Fri, Aug 12, 2016 at 3:26 PM, Vincent StehlÃ
<vincent.stehle@xxxxxxxxx> wrote:
> An assertion in layout_in_gaps() verifies that the gap_lebs pointer is
> below the maximum bound. When computing this maximum bound the idx_lebs
> count is multiplied by sizeof(int), while C pointers arithmetic does take
> into account the size of the pointed elements implicitly already. Remove
> the multiplication to fix the assertion.
>
> Fixes: 1e51764a3c2ac05a ("UBIFS: add new flash file system")
> Signed-off-by: Vincent Stehlà <vincent.stehle@xxxxxxxxx>
> Cc: Artem Bityutskiy <artem.bityutskiy@xxxxxxxxxxxxxxx>
> ---
> fs/ubifs/tnc_commit.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/ubifs/tnc_commit.c b/fs/ubifs/tnc_commit.c
> index b45345d..51157da 100644
> --- a/fs/ubifs/tnc_commit.c
> +++ b/fs/ubifs/tnc_commit.c
> @@ -370,7 +370,7 @@ static int layout_in_gaps(struct ubifs_info *c, int cnt)
>
> p = c->gap_lebs;
> do {
> - ubifs_assert(p < c->gap_lebs + sizeof(int) * c->lst.idx_lebs);
> + ubifs_assert(p < c->gap_lebs + c->lst.idx_lebs);

Good catch! Did you hit this assertion or was it found by review?
I bet the latter since it is here since ever and given the wrongness
it is unlikely to trigger.

--
Thanks,
//richard