Re: linux-6.3-rc6/lib/maple_tree.c: Two style issues

From: Peng Zhang
Date: Mon Apr 10 2023 - 04:24:19 EST



在 2023/4/10 15:05, David Binderman 写道:
Hello there,

Static analyser cppcheck says:

1.

linux-6.3-rc6/lib/maple_tree.c:1951:21: style: Array index 'split' is used before limits check. [arrayIndexThenCheck]

Source code is

        while (((bn->pivot[split] - min) < slot_count - 1) &&
               (split < slot_count - 1) && (b_end - split > slot_min))

Suggest move limits check to before use.

Hi,

It should be fine here. The upper bound of split is b_end.
The initial state (split = b_end / 2) must not cross the boundary,
and (b_end - split > slot_min) ensures that it will not cross the boundary in the future.


2.

linux-6.3-rc6/lib/maple_tree.c:3289:11: warning: Size of pointer 'pivs' used instead of size of its data. [pointerSize]

Source code is

           memset(pivs + tmp, 0,
                   sizeof(unsigned long *) * (max_p - tmp));

It's not good here, I can fix it.

Thanks.


but

    unsigned long *l_pivs, *pivs, gap;

Pointers and long don't have to be the same size. Suggest code rework.

Regards

David Binderman