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>] [day] [month] [year] [list]
Date:   Fri, 10 Dec 2021 06:15:31 +0800
From:   kernel test robot <lkp@...el.com>
To:     Michal Hocko <mhocko@...e.com>
Cc:     llvm@...ts.linux.dev, kbuild-all@...ts.01.org,
        linux-kernel@...r.kernel.org, 0day robot <lkp@...el.com>
Subject: mm/page_alloc.c:8046:12: error: implicit declaration of function
 'arch_alloc_nodedata'

tree:   https://github.com/0day-ci/linux/commits/UPDATE-20211209-184929/Alexey-Makhalov/mm-fix-panic-in-__alloc_pages/20211102-041405
head:   652e780546c1fdbe1adcbbe04106f4020e3bfb56
commit: 652e780546c1fdbe1adcbbe04106f4020e3bfb56 mm: fix panic in __alloc_pages
date:   11 hours ago
config: arm-randconfig-r004-20211209 (https://download.01.org/0day-ci/archive/20211210/202112100636.K5fagHTG-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 097a1cb1d5ebb3a0ec4bcaed8ba3ff6a8e33c00a)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://github.com/0day-ci/linux/commit/652e780546c1fdbe1adcbbe04106f4020e3bfb56
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review UPDATE-20211209-184929/Alexey-Makhalov/mm-fix-panic-in-__alloc_pages/20211102-041405
        git checkout 652e780546c1fdbe1adcbbe04106f4020e3bfb56
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>

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

   mm/page_alloc.c:3804:15: warning: no previous prototype for function 'should_fail_alloc_page' [-Wmissing-prototypes]
   noinline bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
                 ^
   mm/page_alloc.c:3804:10: note: declare 'static' if the function is not intended to be used outside of this translation unit
   noinline bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
            ^
            static 
>> mm/page_alloc.c:8046:12: error: implicit declaration of function 'arch_alloc_nodedata' [-Werror,-Wimplicit-function-declaration]
                           pgdat = arch_alloc_nodedata(nid);
                                   ^
>> mm/page_alloc.c:8046:10: warning: incompatible integer to pointer conversion assigning to 'pg_data_t *' (aka 'struct pglist_data *') from 'int' [-Wint-conversion]
                           pgdat = arch_alloc_nodedata(nid);
                                 ^ ~~~~~~~~~~~~~~~~~~~~~~~~
>> mm/page_alloc.c:8052:4: error: implicit declaration of function 'arch_refresh_nodedata' [-Werror,-Wimplicit-function-declaration]
                           arch_refresh_nodedata(nid, pgdat);
                           ^
   mm/page_alloc.c:8052:4: note: did you mean 'arch_alloc_nodedata'?
   mm/page_alloc.c:8046:12: note: 'arch_alloc_nodedata' declared here
                           pgdat = arch_alloc_nodedata(nid);
                                   ^
   2 warnings and 2 errors generated.


vim +/arch_alloc_nodedata +8046 mm/page_alloc.c

  7949	
  7950	/**
  7951	 * free_area_init - Initialise all pg_data_t and zone data
  7952	 * @max_zone_pfn: an array of max PFNs for each zone
  7953	 *
  7954	 * This will call free_area_init_node() for each active node in the system.
  7955	 * Using the page ranges provided by memblock_set_node(), the size of each
  7956	 * zone in each node and their holes is calculated. If the maximum PFN
  7957	 * between two adjacent zones match, it is assumed that the zone is empty.
  7958	 * For example, if arch_max_dma_pfn == arch_max_dma32_pfn, it is assumed
  7959	 * that arch_max_dma32_pfn has no pages. It is also assumed that a zone
  7960	 * starts where the previous one ended. For example, ZONE_DMA32 starts
  7961	 * at arch_max_dma_pfn.
  7962	 */
  7963	void __init free_area_init(unsigned long *max_zone_pfn)
  7964	{
  7965		unsigned long start_pfn, end_pfn;
  7966		int i, nid, zone;
  7967		bool descending;
  7968	
  7969		/* Record where the zone boundaries are */
  7970		memset(arch_zone_lowest_possible_pfn, 0,
  7971					sizeof(arch_zone_lowest_possible_pfn));
  7972		memset(arch_zone_highest_possible_pfn, 0,
  7973					sizeof(arch_zone_highest_possible_pfn));
  7974	
  7975		start_pfn = find_min_pfn_with_active_regions();
  7976		descending = arch_has_descending_max_zone_pfns();
  7977	
  7978		for (i = 0; i < MAX_NR_ZONES; i++) {
  7979			if (descending)
  7980				zone = MAX_NR_ZONES - i - 1;
  7981			else
  7982				zone = i;
  7983	
  7984			if (zone == ZONE_MOVABLE)
  7985				continue;
  7986	
  7987			end_pfn = max(max_zone_pfn[zone], start_pfn);
  7988			arch_zone_lowest_possible_pfn[zone] = start_pfn;
  7989			arch_zone_highest_possible_pfn[zone] = end_pfn;
  7990	
  7991			start_pfn = end_pfn;
  7992		}
  7993	
  7994		/* Find the PFNs that ZONE_MOVABLE begins at in each node */
  7995		memset(zone_movable_pfn, 0, sizeof(zone_movable_pfn));
  7996		find_zone_movable_pfns_for_nodes();
  7997	
  7998		/* Print out the zone ranges */
  7999		pr_info("Zone ranges:\n");
  8000		for (i = 0; i < MAX_NR_ZONES; i++) {
  8001			if (i == ZONE_MOVABLE)
  8002				continue;
  8003			pr_info("  %-8s ", zone_names[i]);
  8004			if (arch_zone_lowest_possible_pfn[i] ==
  8005					arch_zone_highest_possible_pfn[i])
  8006				pr_cont("empty\n");
  8007			else
  8008				pr_cont("[mem %#018Lx-%#018Lx]\n",
  8009					(u64)arch_zone_lowest_possible_pfn[i]
  8010						<< PAGE_SHIFT,
  8011					((u64)arch_zone_highest_possible_pfn[i]
  8012						<< PAGE_SHIFT) - 1);
  8013		}
  8014	
  8015		/* Print out the PFNs ZONE_MOVABLE begins at in each node */
  8016		pr_info("Movable zone start for each node\n");
  8017		for (i = 0; i < MAX_NUMNODES; i++) {
  8018			if (zone_movable_pfn[i])
  8019				pr_info("  Node %d: %#018Lx\n", i,
  8020				       (u64)zone_movable_pfn[i] << PAGE_SHIFT);
  8021		}
  8022	
  8023		/*
  8024		 * Print out the early node map, and initialize the
  8025		 * subsection-map relative to active online memory ranges to
  8026		 * enable future "sub-section" extensions of the memory map.
  8027		 */
  8028		pr_info("Early memory node ranges\n");
  8029		for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid) {
  8030			pr_info("  node %3d: [mem %#018Lx-%#018Lx]\n", nid,
  8031				(u64)start_pfn << PAGE_SHIFT,
  8032				((u64)end_pfn << PAGE_SHIFT) - 1);
  8033			subsection_map_init(start_pfn, end_pfn - start_pfn);
  8034		}
  8035	
  8036		/* Initialise every node */
  8037		mminit_verify_pageflags_layout();
  8038		setup_nr_node_ids();
  8039		for_each_node(nid) {
  8040			pg_data_t *pgdat;
  8041	
  8042			if (!node_online(nid)) {
  8043				pr_warn("Node %d uninitialized by the platform. Please report with boot dmesg.\n", nid);
  8044	
  8045				/* Allocator not initialized yet */
> 8046				pgdat = arch_alloc_nodedata(nid);
  8047				if (!pgdat) {
  8048					pr_err("Cannot allocate %zuB for node %d.\n",
  8049							sizeof(*pgdat), nid);
  8050					continue;
  8051				}
> 8052				arch_refresh_nodedata(nid, pgdat);
  8053				free_area_init_memoryless_node(nid);
  8054				/*
  8055				 * not marking this node online because we do not want to
  8056				 * confuse userspace by sysfs files/directories for node
  8057				 * without any memory attached to it (see topology_init)
  8058				 * The pgdat will get fully initialized when a memory is
  8059				 * hotpluged into it by hotadd_init_pgdat
  8060				 */
  8061				continue;
  8062			}
  8063	
  8064			pgdat = NODE_DATA(nid);
  8065			free_area_init_node(nid);
  8066	
  8067			/* Any memory on that node */
  8068			if (pgdat->node_present_pages)
  8069				node_set_state(nid, N_MEMORY);
  8070			check_for_memory(pgdat, nid);
  8071		}
  8072	
  8073		memmap_init();
  8074	}
  8075	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ