From: Bart Van Assche <bvanassche@acm.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org, Konstantin Khlebnikov <koct9i@gmail.com>,
Nathan Chancellor <nathan@kernel.org>
Subject: Re: [PATCH] mm/vmstat: Fix a W=1 clang compiler warning
Date: Fri, 13 Dec 2024 14:01:13 -0800 [thread overview]
Message-ID: <8640d744-d182-474b-9059-204bcea47d1a@acm.org> (raw)
In-Reply-To: <20241212182425.ad1f7894cd0f00b2e34bbaed@linux-foundation.org>
On 12/12/24 6:24 PM, Andrew Morton wrote:
> On Thu, 12 Dec 2024 13:31:26 -0800 Bart Van Assche <bvanassche@acm.org> wrote:
>
>> Fix the following clang compiler warning that is reported if the kernel is
>> built with W=1:
>>
>> ./include/linux/vmstat.h:518:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
>> 518 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
>> | ~~~~~~~~~~~ ^ ~~~
>>
>> ...
>>
>> --- a/include/linux/vmstat.h
>> +++ b/include/linux/vmstat.h
>> @@ -515,7 +515,7 @@ static inline const char *node_stat_name(enum node_stat_item item)
>>
>> static inline const char *lru_list_name(enum lru_list lru)
>> {
>> - return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
>> + return node_stat_name(NR_LRU_BASE + (enum node_stat_item)lru) + 3; // skip "nr_"
>> }
>>
>
> Spose so. One always suspects that adding a typecast is a sign that we
> screwed things up somehow. The relationship between enums lru_list and
> node_stat_item is foggy, and I'm unsure whether this is the place to
> make the transition it. Perhaps lru_list_name() should take an
> `unsigned int' arg instead.
Could the (untested) patch below be a better approach?
Thanks,
Bart.
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index b36124145a16..a361cac06a85 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -135,10 +135,16 @@ enum numa_stat_item {
#define NR_VM_NUMA_EVENT_ITEMS 0
#endif
+/*
+ * enum lru_list constants are often added to NR_ZONE_LRU_BASE. Define
+ * NR_ZONE_LRU_BASE as an integer instead of enum node_stat_item to prevent
+ * that the compiler warns about enumeration type mismatches.
+ */
+#define NR_ZONE_LRU_BASE 1 /* Used only for compaction and reclaim retry */
+
enum zone_stat_item {
/* First 128 byte cacheline (assuming 64 bit words) */
NR_FREE_PAGES,
- NR_ZONE_LRU_BASE, /* Used only for compaction and reclaim retry */
NR_ZONE_INACTIVE_ANON = NR_ZONE_LRU_BASE,
NR_ZONE_ACTIVE_ANON,
NR_ZONE_INACTIVE_FILE,
@@ -157,8 +163,14 @@ enum zone_stat_item {
#endif
NR_VM_ZONE_STAT_ITEMS };
+/*
+ * enum lru_list constants are often added to NR_LRU_BASE. Define
NR_LRU_BASE
+ * as an integer instead of enum node_stat_item to prevent that the
compiler
+ * warns about enumeration type mismatches.
+ */
+#define NR_LRU_BASE 0
+
enum node_stat_item {
- NR_LRU_BASE,
NR_INACTIVE_ANON = NR_LRU_BASE, /* must match order of LRU_[IN]ACTIVE */
NR_ACTIVE_ANON, /* " " " " " */
NR_INACTIVE_FILE, /* " " " " " */
next prev parent reply other threads:[~2024-12-13 22:01 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-12 21:31 [PATCH] mm/vmstat: Fix a W=1 clang compiler warning Bart Van Assche
2024-12-13 2:24 ` Andrew Morton
2024-12-13 22:01 ` Bart Van Assche [this message]
2025-01-22 1:57 ` Ivan Shapovalov
2025-01-22 21:55 ` Bart Van Assche
2025-01-28 21:36 ` Bart Van Assche
2025-01-29 10:22 ` Vlastimil Babka
2025-01-29 17:30 ` Bart Van Assche
2025-01-29 22:46 ` 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=8640d744-d182-474b-9059-204bcea47d1a@acm.org \
--to=bvanassche@acm.org \
--cc=akpm@linux-foundation.org \
--cc=koct9i@gmail.com \
--cc=linux-mm@kvack.org \
--cc=nathan@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.