mm/show_mem: fix format string inconsistencies and type mismatches
Subsystems (2)
PATCH 1/1 mm/show_mem: fix format string inconsistencies and type mismatches
From: Ye Liu <[email protected]>
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
--- mm/show_mem.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
mm/show_mem.c +6 -6
@@ -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);
Signature · 1 line
2.25.1
Quoted 17 lines · Ye Liu
From: Ye Liu <[email protected]>
Fix five format string issues in
show_free_areas()and__show_mem():1-2.
reserved_highatomicandfree_highatomic: %luKB -> %lukB
The uppercase "KB" is inconsistent with all other fields in the same output block and with/proc/meminfoconvention.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 otherK()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.
Quoted 7 lines
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.oSigned-off-by Ye Liu <[email protected]>
Quoted 55 lines
--- mm/show_mem.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)mm/show_mem.c +6
-6@@ -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);
Quoted 17 lines · Ye Liu
From: Ye Liu <[email protected]>
Fix five format string issues in
show_free_areas()and__show_mem():1-2.
reserved_highatomicandfree_highatomic: %luKB -> %lukB
The uppercase "KB" is inconsistent with all other fields in the same output block and with/proc/meminfoconvention.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 otherK()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.
Quoted 7 lines
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.oSigned-off-by Ye Liu <[email protected]>