Re: [PATCH 5/6] mm: add selftests to split_huge_page() to verify unmap/zap of zero pages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 01/08/2024 05:45, kernel test robot wrote:
> Hi Usama,
> 
> kernel test robot noticed the following build warnings:
> 
> [auto build test WARNING on akpm-mm/mm-everything]
> 
> url:    https://github.com/intel-lab-lkp/linux/commits/Usama-Arif/Revert-memcg-remove-mem_cgroup_uncharge_list/20240730-223949
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
> patch link:    https://lore.kernel.org/r/20240730125346.1580150-6-usamaarif642%40gmail.com
> patch subject: [PATCH 5/6] mm: add selftests to split_huge_page() to verify unmap/zap of zero pages
> :::::: branch date: 32 hours ago
> :::::: commit date: 32 hours ago
> compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240801/202408010618.lgnamdZd-lkp@xxxxxxxxx/reproduce)
> 
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@xxxxxxxxx>
> | Closes: https://lore.kernel.org/r/202408010618.lgnamdZd-lkp@xxxxxxxxx/
> 
> All warnings (new ones prefixed by >>):
> 
>    vm_util.c: In function 'rss_anon':
>>> vm_util.c:188:41: warning: format '%ld' expects argument of type 'long int *', but argument 3 has type 'uint64_t *' {aka 'long long unsigned int *'} [-Wformat=]
>      188 |         if (sscanf(buffer, "RssAnon:%10ld kB", &rss_anon) != 1)
>          |                                     ~~~~^      ~~~~~~~~~
>          |                                         |      |
>          |                                         |      uint64_t * {aka long long unsigned int *}
>          |                                         long int *
>          |                                     %10lld
> 
> 

Interesting affect of different compilers!

If I compile with the above suggestion on my machine, i.e. convert ld to lld, I get a warning on my machine that uint64_t is long unsigned int (and not long long unsigned int as above):

vm_util.c: In function ‘rss_anon’:
vm_util.c:188:42: warning: format ‘%lld’ expects argument of type ‘long long int *’, but argument 3 has type ‘uint64_t *’ {aka ‘long unsigned int *’} [-Wformat=]
  188 |         if (sscanf(buffer, "RssAnon:%10lld kB", &rss_anon) != 1)
      |                                     ~~~~~^      ~~~~~~~~~
      |                                          |      |
      |                                          |      uint64_t * {aka long unsigned int *}
      |                                          long long int *
      |                                     %10ld


I will just do below which should work hopefully with all compilers: 
diff --git a/tools/testing/selftests/mm/vm_util.c b/tools/testing/selftests/mm/vm_util.c
index 7b7e763ba8e3..bd147bdb1bb2 100644
--- a/tools/testing/selftests/mm/vm_util.c
+++ b/tools/testing/selftests/mm/vm_util.c
@@ -172,9 +172,9 @@ uint64_t read_pmd_pagesize(void)
        return strtoul(buf, NULL, 10);
 }
 
-uint64_t rss_anon(void)
+long unsigned rss_anon(void)
 {
-       uint64_t rss_anon = 0;
+       long unsigned rss_anon = 0;
        FILE *fp;
        char buffer[MAX_LINE_LENGTH];
 
@@ -185,7 +185,7 @@ uint64_t rss_anon(void)
        if (!check_for_pattern(fp, "RssAnon:", buffer, sizeof(buffer)))
                goto err_out;
 
-       if (sscanf(buffer, "RssAnon:%10ld kB", &rss_anon) != 1)
+       if (sscanf(buffer, "RssAnon:%10lu kB", &rss_anon) != 1)
                ksft_exit_fail_msg("Reading status error\n");
 
 err_out:




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux