* [PATCH] mm/show_mem: fix format string inconsistencies and type mismatches
@ 2026-08-05 2:15 Ye Liu
2026-08-05 8:05 ` Vlastimil Babka (SUSE)
2026-08-06 19:52 ` Johannes Weiner
0 siblings, 2 replies; 3+ messages in thread
From: Ye Liu @ 2026-08-05 2:15 UTC (permalink / raw)
To: Andrew Morton, Vlastimil Babka
Cc: Ye Liu, Suren Baghdasaryan, Michal Hocko, Brendan Jackman,
Johannes Weiner, Zi Yan, linux-mm, linux-kernel
From: Ye Liu <liuye@kylinos.cn>
Fix five format string issues in show_free_areas() and __show_mem():
1-2. reserved_highatomic and free_highatomic: %luKB -> %lukB
The uppercase "KB" is inconsistent with all other fields in the
same output block and with /proc/meminfo convention.
3. local_pcp: %ukB -> %lukB with explicit (unsigned long) cast
per_cpu_pages.count is int, so K(count) yields int. Using %u
was a signed/unsigned mismatch. Cast to unsigned long and use
%lu for consistency with all other K() usages in the file.
4. total pagecache pages: %ld -> %lu
global_node_page_state() returns unsigned long. Using %ld is a
signedness mismatch caught by gcc -Wformat-signedness.
5. hwpoisoned pages: %lu -> %ld
atomic_long_read() returns long (signed). Using %lu is a
signedness mismatch caught by gcc -Wformat-signedness.
Verified with: make KCFLAGS="-Wformat -Wformat-signedness" mm/show_mem.o
Signed-off-by: Ye Liu <liuye@kylinos.cn>
---
mm/show_mem.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/mm/show_mem.c b/mm/show_mem.c
index d1288b4c2b64..b938cbcd774a 100644
--- a/mm/show_mem.c
+++ b/mm/show_mem.c
@@ -309,8 +309,8 @@ static void show_free_areas(unsigned int filter, const nodemask_t *nodemask,
" min:%lukB"
" low:%lukB"
" high:%lukB"
- " reserved_highatomic:%luKB"
- " free_highatomic:%luKB"
+ " reserved_highatomic:%lukB"
+ " free_highatomic:%lukB"
" active_anon:%lukB"
" inactive_anon:%lukB"
" active_file:%lukB"
@@ -323,7 +323,7 @@ static void show_free_areas(unsigned int filter, const nodemask_t *nodemask,
" mlocked:%lukB"
" bounce:%lukB"
" free_pcp:%lukB"
- " local_pcp:%ukB"
+ " local_pcp:%lukB"
" free_cma:%lukB"
"\n",
zone->name,
@@ -350,7 +350,7 @@ static void show_free_areas(unsigned int filter, const nodemask_t *nodemask,
K(zone_page_state(zone, NR_MLOCK)),
0UL,
K(free_pcp),
- K(this_cpu_read(zone->per_cpu_pageset->count)),
+ K((unsigned long)this_cpu_read(zone->per_cpu_pageset->count)),
K(zone_page_state(zone, NR_FREE_CMA_PAGES)));
printk("lowmem_reserve[]:");
for (i = 0; i < MAX_NR_ZONES; i++)
@@ -400,7 +400,7 @@ static void show_free_areas(unsigned int filter, const nodemask_t *nodemask,
hugetlb_show_meminfo_node(nid);
}
- printk("%ld total pagecache pages\n", global_node_page_state(NR_FILE_PAGES));
+ printk("%lu total pagecache pages\n", global_node_page_state(NR_FILE_PAGES));
show_swap_cache_info();
}
@@ -430,7 +430,7 @@ void __show_mem(unsigned int filter, const nodemask_t *nodemask,
printk("%lu pages cma reserved\n", totalcma_pages);
#endif
#ifdef CONFIG_MEMORY_FAILURE
- printk("%lu pages hwpoisoned\n", atomic_long_read(&num_poisoned_pages));
+ printk("%ld pages hwpoisoned\n", atomic_long_read(&num_poisoned_pages));
#endif
#ifdef CONFIG_MEM_ALLOC_PROFILING
static DEFINE_SPINLOCK(mem_alloc_profiling_spinlock);
--
2.25.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] mm/show_mem: fix format string inconsistencies and type mismatches
2026-08-05 2:15 [PATCH] mm/show_mem: fix format string inconsistencies and type mismatches Ye Liu
@ 2026-08-05 8:05 ` Vlastimil Babka (SUSE)
2026-08-06 19:52 ` Johannes Weiner
1 sibling, 0 replies; 3+ messages in thread
From: Vlastimil Babka (SUSE) @ 2026-08-05 8:05 UTC (permalink / raw)
To: Ye Liu, Andrew Morton
Cc: Ye Liu, Suren Baghdasaryan, Michal Hocko, Brendan Jackman,
Johannes Weiner, Zi Yan, linux-mm, linux-kernel
On 8/5/26 04:15, Ye Liu wrote:
> From: Ye Liu <liuye@kylinos.cn>
>
> Fix five format string issues in show_free_areas() and __show_mem():
>
> 1-2. reserved_highatomic and free_highatomic: %luKB -> %lukB
> The uppercase "KB" is inconsistent with all other fields in the
> same output block and with /proc/meminfo convention.
>
> 3. local_pcp: %ukB -> %lukB with explicit (unsigned long) cast
> per_cpu_pages.count is int, so K(count) yields int. Using %u
> was a signed/unsigned mismatch. Cast to unsigned long and use
> %lu for consistency with all other K() usages in the file.
>
> 4. total pagecache pages: %ld -> %lu
> global_node_page_state() returns unsigned long. Using %ld is a
> signedness mismatch caught by gcc -Wformat-signedness.
>
> 5. hwpoisoned pages: %lu -> %ld
> atomic_long_read() returns long (signed). Using %lu is a
> signedness mismatch caught by gcc -Wformat-signedness.
>
> Verified with: make KCFLAGS="-Wformat -Wformat-signedness" mm/show_mem.o
>
> Signed-off-by: Ye Liu <liuye@kylinos.cn>
Acked-by: Vlastimil Babka (SUSE) <vbabka@kernel.org>
> ---
> mm/show_mem.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/mm/show_mem.c b/mm/show_mem.c
> index d1288b4c2b64..b938cbcd774a 100644
> --- a/mm/show_mem.c
> +++ b/mm/show_mem.c
> @@ -309,8 +309,8 @@ static void show_free_areas(unsigned int filter, const nodemask_t *nodemask,
> " min:%lukB"
> " low:%lukB"
> " high:%lukB"
> - " reserved_highatomic:%luKB"
> - " free_highatomic:%luKB"
> + " reserved_highatomic:%lukB"
> + " free_highatomic:%lukB"
> " active_anon:%lukB"
> " inactive_anon:%lukB"
> " active_file:%lukB"
> @@ -323,7 +323,7 @@ static void show_free_areas(unsigned int filter, const nodemask_t *nodemask,
> " mlocked:%lukB"
> " bounce:%lukB"
> " free_pcp:%lukB"
> - " local_pcp:%ukB"
> + " local_pcp:%lukB"
> " free_cma:%lukB"
> "\n",
> zone->name,
> @@ -350,7 +350,7 @@ static void show_free_areas(unsigned int filter, const nodemask_t *nodemask,
> K(zone_page_state(zone, NR_MLOCK)),
> 0UL,
> K(free_pcp),
> - K(this_cpu_read(zone->per_cpu_pageset->count)),
> + K((unsigned long)this_cpu_read(zone->per_cpu_pageset->count)),
> K(zone_page_state(zone, NR_FREE_CMA_PAGES)));
> printk("lowmem_reserve[]:");
> for (i = 0; i < MAX_NR_ZONES; i++)
> @@ -400,7 +400,7 @@ static void show_free_areas(unsigned int filter, const nodemask_t *nodemask,
> hugetlb_show_meminfo_node(nid);
> }
>
> - printk("%ld total pagecache pages\n", global_node_page_state(NR_FILE_PAGES));
> + printk("%lu total pagecache pages\n", global_node_page_state(NR_FILE_PAGES));
>
> show_swap_cache_info();
> }
> @@ -430,7 +430,7 @@ void __show_mem(unsigned int filter, const nodemask_t *nodemask,
> printk("%lu pages cma reserved\n", totalcma_pages);
> #endif
> #ifdef CONFIG_MEMORY_FAILURE
> - printk("%lu pages hwpoisoned\n", atomic_long_read(&num_poisoned_pages));
> + printk("%ld pages hwpoisoned\n", atomic_long_read(&num_poisoned_pages));
> #endif
> #ifdef CONFIG_MEM_ALLOC_PROFILING
> static DEFINE_SPINLOCK(mem_alloc_profiling_spinlock);
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] mm/show_mem: fix format string inconsistencies and type mismatches
2026-08-05 2:15 [PATCH] mm/show_mem: fix format string inconsistencies and type mismatches Ye Liu
2026-08-05 8:05 ` Vlastimil Babka (SUSE)
@ 2026-08-06 19:52 ` Johannes Weiner
1 sibling, 0 replies; 3+ messages in thread
From: Johannes Weiner @ 2026-08-06 19:52 UTC (permalink / raw)
To: Ye Liu
Cc: Andrew Morton, Vlastimil Babka, Ye Liu, Suren Baghdasaryan,
Michal Hocko, Brendan Jackman, Zi Yan, linux-mm, linux-kernel
On Wed, Aug 05, 2026 at 10:15:55AM +0800, Ye Liu wrote:
> From: Ye Liu <liuye@kylinos.cn>
>
> Fix five format string issues in show_free_areas() and __show_mem():
>
> 1-2. reserved_highatomic and free_highatomic: %luKB -> %lukB
> The uppercase "KB" is inconsistent with all other fields in the
> same output block and with /proc/meminfo convention.
>
> 3. local_pcp: %ukB -> %lukB with explicit (unsigned long) cast
> per_cpu_pages.count is int, so K(count) yields int. Using %u
> was a signed/unsigned mismatch. Cast to unsigned long and use
> %lu for consistency with all other K() usages in the file.
>
> 4. total pagecache pages: %ld -> %lu
> global_node_page_state() returns unsigned long. Using %ld is a
> signedness mismatch caught by gcc -Wformat-signedness.
>
> 5. hwpoisoned pages: %lu -> %ld
> atomic_long_read() returns long (signed). Using %lu is a
> signedness mismatch caught by gcc -Wformat-signedness.
>
> Verified with: make KCFLAGS="-Wformat -Wformat-signedness" mm/show_mem.o
>
> Signed-off-by: Ye Liu <liuye@kylinos.cn>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-08-06 19:52 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-05 2:15 [PATCH] mm/show_mem: fix format string inconsistencies and type mismatches Ye Liu
2026-08-05 8:05 ` Vlastimil Babka (SUSE)
2026-08-06 19:52 ` Johannes Weiner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox