lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202502271338.7VyyFcoF-lkp@intel.com>
Date: Thu, 27 Feb 2025 13:35:41 +0800
From: kernel test robot <lkp@...el.com>
To: zhongjinji@...or.com, akpm@...ux-foundation.org
Cc: oe-kbuild-all@...ts.linux.dev, yuzhao@...gle.com,
	linux-kernel@...r.kernel.org, linux-mm@...ck.org,
	rientjes@...gle.com, vbabka@...e.cz, zhongjinji@...or.com,
	yipengxiang@...or.com, liulu.liu@...or.com, feng.han@...or.com
Subject: Re: [PATCH] mm/page_alloc: make the maximum number of highatomic
 pageblocks resizable

Hi,

kernel test robot noticed the following build errors:

[auto build test ERROR on akpm-mm/mm-everything]

url:    https://github.com/intel-lab-lkp/linux/commits/zhongjinji-honor-com/mm-page_alloc-make-the-maximum-number-of-highatomic-pageblocks-resizable/20250226-121712
base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link:    https://lore.kernel.org/r/20250226024126.3718-1-zhongjinji%40honor.com
patch subject: [PATCH] mm/page_alloc: make the maximum number of highatomic pageblocks resizable
config: x86_64-buildonly-randconfig-003-20250227 (https://download.01.org/0day-ci/archive/20250227/202502271338.7VyyFcoF-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250227/202502271338.7VyyFcoF-lkp@intel.com/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@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502271338.7VyyFcoF-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

>> mm/page_alloc.c:6262:17: error: field name not in record or union initializer
    6262 |                 .procname       = "highatomic_reserve_ratio",
         |                 ^
   mm/page_alloc.c:6262:17: note: (near initialization for 'page_alloc_sysctl_table')
>> mm/page_alloc.c:6262:35: error: invalid initializer
    6262 |                 .procname       = "highatomic_reserve_ratio",
         |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:6262:35: note: (near initialization for 'page_alloc_sysctl_table[4].<anonymous>')
   mm/page_alloc.c:6263:17: error: field name not in record or union initializer
    6263 |                 .data           = &highatomic_reserve_ratio,
         |                 ^
   mm/page_alloc.c:6263:17: note: (near initialization for 'page_alloc_sysctl_table')
   mm/page_alloc.c:6263:35: error: invalid initializer
    6263 |                 .data           = &highatomic_reserve_ratio,
         |                                   ^
   mm/page_alloc.c:6263:35: note: (near initialization for 'page_alloc_sysctl_table[5].<anonymous>')
   mm/page_alloc.c:6264:17: error: field name not in record or union initializer
    6264 |                 .maxlen         = sizeof(highatomic_reserve_ratio),
         |                 ^
   mm/page_alloc.c:6264:17: note: (near initialization for 'page_alloc_sysctl_table')
   mm/page_alloc.c:6264:35: error: invalid initializer
    6264 |                 .maxlen         = sizeof(highatomic_reserve_ratio),
         |                                   ^~~~~~
   mm/page_alloc.c:6264:35: note: (near initialization for 'page_alloc_sysctl_table[6].<anonymous>')
   mm/page_alloc.c:6265:17: error: field name not in record or union initializer
    6265 |                 .mode           = 0644,
         |                 ^
   mm/page_alloc.c:6265:17: note: (near initialization for 'page_alloc_sysctl_table')
   mm/page_alloc.c:6265:35: error: invalid initializer
    6265 |                 .mode           = 0644,
         |                                   ^~~~
   mm/page_alloc.c:6265:35: note: (near initialization for 'page_alloc_sysctl_table[7].<anonymous>')
   mm/page_alloc.c:6266:17: error: field name not in record or union initializer
    6266 |                 .proc_handler   = proc_dointvec_minmax,
         |                 ^
   mm/page_alloc.c:6266:17: note: (near initialization for 'page_alloc_sysctl_table')
   mm/page_alloc.c:6266:35: error: invalid initializer
    6266 |                 .proc_handler   = proc_dointvec_minmax,
         |                                   ^~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:6266:35: note: (near initialization for 'page_alloc_sysctl_table[8].<anonymous>')
   mm/page_alloc.c:6267:17: error: field name not in record or union initializer
    6267 |                 .extra1         = SYSCTL_ZERO,
         |                 ^
   mm/page_alloc.c:6267:17: note: (near initialization for 'page_alloc_sysctl_table')
   In file included from include/linux/key.h:17,
                    from include/linux/cred.h:13,
                    from include/linux/sched/signal.h:10,
                    from include/linux/rcuwait.h:6,
                    from include/linux/mm.h:35,
                    from mm/page_alloc.c:19:
>> include/linux/sysctl.h:41:41: error: invalid initializer
      41 | #define SYSCTL_ZERO                     ((void *)&sysctl_vals[0])
         |                                         ^
   mm/page_alloc.c:6267:35: note: in expansion of macro 'SYSCTL_ZERO'
    6267 |                 .extra1         = SYSCTL_ZERO,
         |                                   ^~~~~~~~~~~
   include/linux/sysctl.h:41:41: note: (near initialization for 'page_alloc_sysctl_table[9].<anonymous>')
      41 | #define SYSCTL_ZERO                     ((void *)&sysctl_vals[0])
         |                                         ^
   mm/page_alloc.c:6267:35: note: in expansion of macro 'SYSCTL_ZERO'
    6267 |                 .extra1         = SYSCTL_ZERO,
         |                                   ^~~~~~~~~~~
>> mm/page_alloc.c:6228:59: warning: missing braces around initializer [-Wmissing-braces]
    6228 | static const struct ctl_table page_alloc_sysctl_table[] = {
         |                                                           ^
>> mm/page_alloc.c:6269:9: error: expected identifier or '(' before '{' token
    6269 |         {
         |         ^
   mm/page_alloc.c:6275:10: error: expected identifier or '(' before ',' token
    6275 |         },
         |          ^
>> mm/page_alloc.c:6174:12: warning: 'lowmem_reserve_ratio_sysctl_handler' defined but not used [-Wunused-function]
    6174 | static int lowmem_reserve_ratio_sysctl_handler(const struct ctl_table *table,
         |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/suspend.h:5,
                    from mm/page_alloc.c:28:
   include/linux/swap.h:590:12: warning: 'folio_alloc_swap' defined but not used [-Wunused-function]
     590 | static int folio_alloc_swap(struct folio *folio, gfp_t gfp_mask)
         |            ^~~~~~~~~~~~~~~~


vim +6262 mm/page_alloc.c

  6164	
  6165	/*
  6166	 * lowmem_reserve_ratio_sysctl_handler - just a wrapper around
  6167	 *	proc_dointvec() so that we can call setup_per_zone_lowmem_reserve()
  6168	 *	whenever sysctl_lowmem_reserve_ratio changes.
  6169	 *
  6170	 * The reserve ratio obviously has absolutely no relation with the
  6171	 * minimum watermarks. The lowmem reserve ratio can only make sense
  6172	 * if in function of the boot time zone sizes.
  6173	 */
> 6174	static int lowmem_reserve_ratio_sysctl_handler(const struct ctl_table *table,
  6175			int write, void *buffer, size_t *length, loff_t *ppos)
  6176	{
  6177		int i;
  6178	
  6179		proc_dointvec_minmax(table, write, buffer, length, ppos);
  6180	
  6181		for (i = 0; i < MAX_NR_ZONES; i++) {
  6182			if (sysctl_lowmem_reserve_ratio[i] < 1)
  6183				sysctl_lowmem_reserve_ratio[i] = 0;
  6184		}
  6185	
  6186		setup_per_zone_lowmem_reserve();
  6187		return 0;
  6188	}
  6189	
  6190	/*
  6191	 * percpu_pagelist_high_fraction - changes the pcp->high for each zone on each
  6192	 * cpu. It is the fraction of total pages in each zone that a hot per cpu
  6193	 * pagelist can have before it gets flushed back to buddy allocator.
  6194	 */
  6195	static int percpu_pagelist_high_fraction_sysctl_handler(const struct ctl_table *table,
  6196			int write, void *buffer, size_t *length, loff_t *ppos)
  6197	{
  6198		struct zone *zone;
  6199		int old_percpu_pagelist_high_fraction;
  6200		int ret;
  6201	
  6202		mutex_lock(&pcp_batch_high_lock);
  6203		old_percpu_pagelist_high_fraction = percpu_pagelist_high_fraction;
  6204	
  6205		ret = proc_dointvec_minmax(table, write, buffer, length, ppos);
  6206		if (!write || ret < 0)
  6207			goto out;
  6208	
  6209		/* Sanity checking to avoid pcp imbalance */
  6210		if (percpu_pagelist_high_fraction &&
  6211		    percpu_pagelist_high_fraction < MIN_PERCPU_PAGELIST_HIGH_FRACTION) {
  6212			percpu_pagelist_high_fraction = old_percpu_pagelist_high_fraction;
  6213			ret = -EINVAL;
  6214			goto out;
  6215		}
  6216	
  6217		/* No change? */
  6218		if (percpu_pagelist_high_fraction == old_percpu_pagelist_high_fraction)
  6219			goto out;
  6220	
  6221		for_each_populated_zone(zone)
  6222			zone_set_pageset_high_and_batch(zone, 0);
  6223	out:
  6224		mutex_unlock(&pcp_batch_high_lock);
  6225		return ret;
  6226	}
  6227	
> 6228	static const struct ctl_table page_alloc_sysctl_table[] = {
  6229		{
  6230			.procname	= "min_free_kbytes",
  6231			.data		= &min_free_kbytes,
  6232			.maxlen		= sizeof(min_free_kbytes),
  6233			.mode		= 0644,
  6234			.proc_handler	= min_free_kbytes_sysctl_handler,
  6235			.extra1		= SYSCTL_ZERO,
  6236		},
  6237		{
  6238			.procname	= "watermark_boost_factor",
  6239			.data		= &watermark_boost_factor,
  6240			.maxlen		= sizeof(watermark_boost_factor),
  6241			.mode		= 0644,
  6242			.proc_handler	= proc_dointvec_minmax,
  6243			.extra1		= SYSCTL_ZERO,
  6244		},
  6245		{
  6246			.procname	= "watermark_scale_factor",
  6247			.data		= &watermark_scale_factor,
  6248			.maxlen		= sizeof(watermark_scale_factor),
  6249			.mode		= 0644,
  6250			.proc_handler	= watermark_scale_factor_sysctl_handler,
  6251			.extra1		= SYSCTL_ONE,
  6252			.extra2		= SYSCTL_THREE_THOUSAND,
  6253		},
  6254		{
  6255			.procname	= "percpu_pagelist_high_fraction",
  6256			.data		= &percpu_pagelist_high_fraction,
  6257			.maxlen		= sizeof(percpu_pagelist_high_fraction),
  6258			.mode		= 0644,
  6259			.proc_handler	= percpu_pagelist_high_fraction_sysctl_handler,
  6260			.extra1		= SYSCTL_ZERO,
  6261		},
> 6262			.procname	= "highatomic_reserve_ratio",
  6263			.data		= &highatomic_reserve_ratio,
  6264			.maxlen		= sizeof(highatomic_reserve_ratio),
  6265			.mode		= 0644,
  6266			.proc_handler	= proc_dointvec_minmax,
  6267			.extra1		= SYSCTL_ZERO,
  6268		},
> 6269		{
  6270			.procname	= "lowmem_reserve_ratio",
  6271			.data		= &sysctl_lowmem_reserve_ratio,
  6272			.maxlen		= sizeof(sysctl_lowmem_reserve_ratio),
  6273			.mode		= 0644,
  6274			.proc_handler	= lowmem_reserve_ratio_sysctl_handler,
  6275		},
  6276	#ifdef CONFIG_NUMA
  6277		{
  6278			.procname	= "numa_zonelist_order",
  6279			.data		= &numa_zonelist_order,
  6280			.maxlen		= NUMA_ZONELIST_ORDER_LEN,
  6281			.mode		= 0644,
  6282			.proc_handler	= numa_zonelist_order_handler,
  6283		},
  6284		{
  6285			.procname	= "min_unmapped_ratio",
  6286			.data		= &sysctl_min_unmapped_ratio,
  6287			.maxlen		= sizeof(sysctl_min_unmapped_ratio),
  6288			.mode		= 0644,
  6289			.proc_handler	= sysctl_min_unmapped_ratio_sysctl_handler,
  6290			.extra1		= SYSCTL_ZERO,
  6291			.extra2		= SYSCTL_ONE_HUNDRED,
  6292		},
  6293		{
  6294			.procname	= "min_slab_ratio",
  6295			.data		= &sysctl_min_slab_ratio,
  6296			.maxlen		= sizeof(sysctl_min_slab_ratio),
  6297			.mode		= 0644,
  6298			.proc_handler	= sysctl_min_slab_ratio_sysctl_handler,
  6299			.extra1		= SYSCTL_ZERO,
  6300			.extra2		= SYSCTL_ONE_HUNDRED,
  6301		},
  6302	#endif
  6303	};
  6304	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ