linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: fffsqian  <fffsqian@163.com>
To: "David Hildenbrand" <david@redhat.com>
Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, mhocko@kernel.org,
	zhengqi.arch@bytedance.com, lorenzo.stoakes@oracle.com,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	"Qingshuang Fu" <fuqingshuang@kylinos.cn>
Subject: Re:Re: [PATCH] Fix the data type inconsistency issue of min (tier, MAX_CR_TIERS-1) in read_ctrl_pos
Date: Fri, 8 Aug 2025 17:26:36 +0800 (CST)	[thread overview]
Message-ID: <3d57fccc.8a13.1988900f06e.Coremail.fffsqian@163.com> (raw)
In-Reply-To: <91d72c49-22df-43ed-aeeb-0b93a9da3bfa@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 3035 bytes --]

Hi David,




Thanks a lot for your feedback!




Regarding the question of why only I encountered this error: it’s because my compilation environment has CONFIG_WERROR enabled (treating warnings as errors). The original code triggers a static assertion warning (due to the signed/unsigned mismatch in min(tier, 4U - 1)), which would normally be a non-fatal warning. However, with CONFIG_WERROR, this gets elevated to a compile error, making it visible in my builds.




The error message is as follows:

from mm/vmscan.c:15:

mm/vmscan.c: In function ‘read_ctrl_pos’:

./include/linux/build_bug.h:78:41: error: static assertion failed: "min(tier, 4U - 1) signedness error, fix types or consider umin() before min_t()"




I really appreciate your suggestions on the patch format issues—I’ve addressed those as well, including adding fix information and streamlining patch descriptions, etc.




V2 of the patch will be sent shortly.




Thanks again for your help!




Qingshuang Fu fffsqian@163.com

















At 2025-08-08 15:35:19, "David Hildenbrand" <david@redhat.com> wrote:
>On 08.08.25 09:21, Qingshuang Fu wrote:
>> From: Qingshuang Fu <fuqingshuang@kylinos.cn>
>
>Subject should probably be
>
>"mm/vmscan: fix build bug in read_ctrl_pos"
>
>> 
>> Due to the fact that the tier data type in min (tier, MAX_CR_TIERS -1)
>> is int,but MAX_CR_TIERS is an unsigned type, directly using
>> the min function for comparison will result in an error:
>> from mm/vmscan.c:15:
>> mm/vmscan.c: In function ‘read_ctrl_pos’:
>> ./include/linux/build_bug.h:78:41: error: static assertion failed:
>> "min(tier, 4U - 1) signedness error, fix types or
>> consider umin() before min_t()"
>> And MAX_CR_TIERS is a macro definition defined as 4U,
>> so min_t can be used to convert it to int type before
>> performing the minimum value operation.
>> 
>
>Please use empty lines to make the description easier to read. Also, I 
>think you can simplify this heavily.
>
>We should add
>
>Fixes: 37a260870f2c ("mm/mglru: rework type selection")
>
>BUT
>
>this commit is more than half a year old. How come no built bot 
>complained about that?
>
>IOW, what compiler are you using and why are only you able to trigger this>
>
>> Signed-off-by: Qingshuang Fu <fuqingshuang@kylinos.cn>
>> ---
>>   mm/vmscan.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/mm/vmscan.c b/mm/vmscan.c
>> index 7de11524a936..f991196fd8e5 100644
>> --- a/mm/vmscan.c
>> +++ b/mm/vmscan.c
>> @@ -3194,7 +3194,7 @@ static void read_ctrl_pos(struct lruvec *lruvec, int type, int tier, int gain,
>>   	pos->gain = gain;
>>   	pos->refaulted = pos->total = 0;
>>   
>> -	for (i = tier % MAX_NR_TIERS; i <= min(tier, MAX_NR_TIERS - 1); i++) {
>> +	for (i = tier % MAX_NR_TIERS; i <= min_t(int, tier, MAX_NR_TIERS - 1); i++) {
>>   		pos->refaulted += lrugen->avg_refaulted[type][i] +
>>   				  atomic_long_read(&lrugen->refaulted[hist][type][i]);
>>   		pos->total += lrugen->avg_total[type][i] +
>
>
>-- 
>Cheers,
>
>David / dhildenb

[-- Attachment #2: Type: text/html, Size: 4261 bytes --]

  reply	other threads:[~2025-08-08  9:27 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-08  7:21 Qingshuang Fu
2025-08-08  7:35 ` David Hildenbrand
2025-08-08  9:26   ` fffsqian [this message]
2025-08-08  9:32     ` David Hildenbrand
2025-08-12  4:40   ` Andrew Morton
2025-08-13 20:03     ` Axel Rasmussen
2025-08-13 21:41       ` Andrew Morton
2025-08-14  5:40         ` Lorenzo Stoakes
2025-08-14 11:51   ` David Laight
2025-08-14 21:26   ` David Laight

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3d57fccc.8a13.1988900f06e.Coremail.fffsqian@163.com \
    --to=fffsqian@163.com \
    --cc=akpm@linux-foundation.org \
    --cc=david@redhat.com \
    --cc=fuqingshuang@kylinos.cn \
    --cc=hannes@cmpxchg.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=mhocko@kernel.org \
    --cc=zhengqi.arch@bytedance.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox