[PATCH 1/5] maple_tree: Move the check forward to avoid static check warning.

Peng Zhang zhangpeng.00 at bytedance.com
Sun Nov 12 18:44:02 PST 2023



在 2023/11/10 22:49, Liam R. Howlett 写道:
> * Peng Zhang <zhangpeng.00 at bytedance.com> [231109 07:43]:
>> Put the check for gap before its reference to avoid Smatch static check
>> warnings. This is not a bug, it's just a validation program.
>>
>> Reported-by: Dan Carpenter <dan.carpenter at linaro.org>
>> Closes: http://lists.infradead.org/pipermail/maple-tree/2023-November/003046.html
>> Signed-off-by: Peng Zhang <zhangpeng.00 at bytedance.com>
>> ---
>>   lib/maple_tree.c | 6 +++++-
>>   1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/lib/maple_tree.c b/lib/maple_tree.c
>> index aaba453b0d30..1dfbcb74787a 100644
>> --- a/lib/maple_tree.c
>> +++ b/lib/maple_tree.c
>> @@ -7249,6 +7249,11 @@ static void mas_validate_gaps(struct ma_state *mas)
>>   
>>   counted:
>>   	if (mt == maple_arange_64) {
>> +		if (!gaps) {
>> +			MT_BUG_ON(mas->tree, 1);
>> +			return;
> 
> Since MT_BUG_ON() will BUG_ON(), is there a reason to return?
> 
> The only reason I've used braces to BUG_ON() is to include extra error
> text, but you haven't provided any here.  I think you could do this (or
> MT_BUG_ON() variant, if you prefer):
> 
> MAS_BUG_ON(mas, gaps == NULL);
Because MT_BUG_ON() in the maple tree may not invoke BUG_ON() and continue
execution, this code is written to prevent the static checker from issuing
further warnings. (Dan Carpenter informed me of this a long time ago.)
> 
>> +		}
>> +
>>   		offset = ma_meta_gap(node, mt);
>>   		if (offset > i) {
>>   			pr_err("gap offset %p[%u] is invalid\n", node, offset);
>> @@ -7261,7 +7266,6 @@ static void mas_validate_gaps(struct ma_state *mas)
>>   			MT_BUG_ON(mas->tree, 1);
>>   		}
>>   
>> -		MT_BUG_ON(mas->tree, !gaps);
>>   		for (i++ ; i < mt_slot_count(mte); i++) {
>>   			if (gaps[i] != 0) {
>>   				pr_err("gap %p[%u] beyond node limit != 0\n",
>> -- 
>> 2.20.1
>>
> 



More information about the maple-tree mailing list