tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 671176b0016c80b3943cb5387312c886aba3308d commit: 719fa3d6ddb50d3035c713c27feeae8b249eb586 [10191/10581] mm/memory_hotplug: prevalidate the address range being added with platform config: x86_64-randconfig-m001-20210211 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: mm/memremap.c:270 pagemap_range() warn: missing error code 'error' vim +/error +270 mm/memremap.c b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 220 static int pagemap_range(struct dev_pagemap *pgmap, struct mhp_params *params, b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 221 int range_id, int nid) 41e94a851304f7 kernel/memremap.c Christoph Hellwig 2015-08-17 222 { 719fa3d6ddb50d mm/memremap.c Anshuman Khandual 2021-02-09 223 const bool is_private = pgmap->type == MEMORY_DEVICE_PRIVATE; b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 224 struct range *range = &pgmap->ranges[range_id]; 966cf44f637e6a kernel/memremap.c Alexander Duyck 2018-10-26 225 struct dev_pagemap *conflict_pgmap; 6869b7b206595a kernel/memremap.c Christoph Hellwig 2019-08-18 226 int error, is_ram; a95c90f1e2c253 kernel/memremap.c Dan Williams 2018-12-28 227 b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 228 if (WARN_ONCE(pgmap_altmap(pgmap) && range_id > 0, b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 229 "altmap not supported for multiple ranges\n")) b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 230 return -EINVAL; f6a55e1a3fe6b3 kernel/memremap.c Christoph Hellwig 2019-06-26 231 a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 232 conflict_pgmap = get_dev_pagemap(PHYS_PFN(range->start), NULL); 15d36fecd0bdc7 kernel/memremap.c Dave Jiang 2018-07-26 233 if (conflict_pgmap) { 6869b7b206595a kernel/memremap.c Christoph Hellwig 2019-08-18 234 WARN(1, "Conflicting mapping in same section\n"); 15d36fecd0bdc7 kernel/memremap.c Dave Jiang 2018-07-26 235 put_dev_pagemap(conflict_pgmap); b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 236 return -ENOMEM; 15d36fecd0bdc7 kernel/memremap.c Dave Jiang 2018-07-26 237 } 15d36fecd0bdc7 kernel/memremap.c Dave Jiang 2018-07-26 238 a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 239 conflict_pgmap = get_dev_pagemap(PHYS_PFN(range->end), NULL); 15d36fecd0bdc7 kernel/memremap.c Dave Jiang 2018-07-26 240 if (conflict_pgmap) { 6869b7b206595a kernel/memremap.c Christoph Hellwig 2019-08-18 241 WARN(1, "Conflicting mapping in same section\n"); 15d36fecd0bdc7 kernel/memremap.c Dave Jiang 2018-07-26 242 put_dev_pagemap(conflict_pgmap); b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 243 return -ENOMEM; 15d36fecd0bdc7 kernel/memremap.c Dave Jiang 2018-07-26 244 } 15d36fecd0bdc7 kernel/memremap.c Dave Jiang 2018-07-26 245 a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 246 is_ram = region_intersects(range->start, range_len(range), d37a14bb5fed13 kernel/memremap.c Linus Torvalds 2016-03-14 247 IORESOURCE_SYSTEM_RAM, IORES_DESC_NONE); 41e94a851304f7 kernel/memremap.c Christoph Hellwig 2015-08-17 248 06489cfbd915ff kernel/memremap.c Dan Williams 2018-12-28 249 if (is_ram != REGION_DISJOINT) { a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 250 WARN_ONCE(1, "attempted on %s region %#llx-%#llx\n", a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 251 is_ram == REGION_MIXED ? "mixed" : "ram", a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 252 range->start, range->end); b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 253 return -ENXIO; 41e94a851304f7 kernel/memremap.c Christoph Hellwig 2015-08-17 254 } 41e94a851304f7 kernel/memremap.c Christoph Hellwig 2015-08-17 255 a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 256 error = xa_err(xa_store_range(&pgmap_array, PHYS_PFN(range->start), a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 257 PHYS_PFN(range->end), pgmap, GFP_KERNEL)); 9476df7d80dfc4 kernel/memremap.c Dan Williams 2016-01-15 258 if (error) b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 259 return error; 9476df7d80dfc4 kernel/memremap.c Dan Williams 2016-01-15 260 41e94a851304f7 kernel/memremap.c Christoph Hellwig 2015-08-17 261 if (nid < 0) 7eff93b7c99f5d kernel/memremap.c Dan Williams 2015-10-05 262 nid = numa_mem_id(); 41e94a851304f7 kernel/memremap.c Christoph Hellwig 2015-08-17 263 b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 264 error = track_pfn_remap(NULL, ¶ms->pgprot, PHYS_PFN(range->start), 0, a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 265 range_len(range)); 9049771f7d5490 kernel/memremap.c Dan Williams 2016-09-07 266 if (error) 9049771f7d5490 kernel/memremap.c Dan Williams 2016-09-07 267 goto err_pfn_remap; 9049771f7d5490 kernel/memremap.c Dan Williams 2016-09-07 268 719fa3d6ddb50d mm/memremap.c Anshuman Khandual 2021-02-09 269 if (!mhp_range_allowed(range->start, range_len(range), !is_private)) 719fa3d6ddb50d mm/memremap.c Anshuman Khandual 2021-02-09 @270 goto err_pfn_remap; "error = -EINVAL;" 719fa3d6ddb50d mm/memremap.c Anshuman Khandual 2021-02-09 271 f931ab479dd24c kernel/memremap.c Dan Williams 2017-01-10 272 mem_hotplug_begin(); 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 273 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 274 /* 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 275 * For device private memory we call add_pages() as we only need to 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 276 * allocate and initialize struct page for the device memory. More- 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 277 * over the device memory is un-accessible thus we do not want to 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 278 * create a linear mapping for the memory like arch_add_memory() 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 279 * would do. 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 280 * 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 281 * For all other device memory types, which are accessible by 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 282 * the CPU, we do want the linear mapping and thus use 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 283 * arch_add_memory(). 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 284 */ 719fa3d6ddb50d mm/memremap.c Anshuman Khandual 2021-02-09 285 if (is_private) { a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 286 error = add_pages(nid, PHYS_PFN(range->start), b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 287 PHYS_PFN(range_len(range)), params); 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 288 } else { a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 289 error = kasan_add_zero_shadow(__va(range->start), range_len(range)); 0207df4fa1a869 kernel/memremap.c Andrey Ryabinin 2018-08-17 290 if (error) { 0207df4fa1a869 kernel/memremap.c Andrey Ryabinin 2018-08-17 291 mem_hotplug_done(); 0207df4fa1a869 kernel/memremap.c Andrey Ryabinin 2018-08-17 292 goto err_kasan; 0207df4fa1a869 kernel/memremap.c Andrey Ryabinin 2018-08-17 293 } 0207df4fa1a869 kernel/memremap.c Andrey Ryabinin 2018-08-17 294 a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 295 error = arch_add_memory(nid, range->start, range_len(range), b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 296 params); 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 297 } 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 298 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 299 if (!error) { 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 300 struct zone *zone; 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 301 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 302 zone = &NODE_DATA(nid)->node_zones[ZONE_DEVICE]; a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 303 move_pfn_range_to_zone(zone, PHYS_PFN(range->start), d882c0067d99d0 mm/memremap.c David Hildenbrand 2020-10-15 304 PHYS_PFN(range_len(range)), params->altmap, d882c0067d99d0 mm/memremap.c David Hildenbrand 2020-10-15 305 MIGRATE_MOVABLE); 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 306 } 69324b8f48339d kernel/memremap.c Dan Williams 2018-12-28 307 f931ab479dd24c kernel/memremap.c Dan Williams 2017-01-10 308 mem_hotplug_done(); 9476df7d80dfc4 kernel/memremap.c Dan Williams 2016-01-15 309 if (error) 9476df7d80dfc4 kernel/memremap.c Dan Williams 2016-01-15 310 goto err_add_memory; 41e94a851304f7 kernel/memremap.c Christoph Hellwig 2015-08-17 311 d77a117e6871ff kernel/memremap.c Dan Williams 2016-03-09 312 /* 966cf44f637e6a kernel/memremap.c Alexander Duyck 2018-10-26 313 * Initialization of the pages has been deferred until now in order 966cf44f637e6a kernel/memremap.c Alexander Duyck 2018-10-26 314 * to allow us to do the work while not holding the hotplug lock. d77a117e6871ff kernel/memremap.c Dan Williams 2016-03-09 315 */ 966cf44f637e6a kernel/memremap.c Alexander Duyck 2018-10-26 316 memmap_init_zone_device(&NODE_DATA(nid)->node_zones[ZONE_DEVICE], a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 317 PHYS_PFN(range->start), a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 318 PHYS_PFN(range_len(range)), pgmap); b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 319 percpu_ref_get_many(pgmap->ref, pfn_end(pgmap, range_id) b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 320 - pfn_first(pgmap, range_id)); b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 321 return 0; 9476df7d80dfc4 kernel/memremap.c Dan Williams 2016-01-15 322 9476df7d80dfc4 kernel/memremap.c Dan Williams 2016-01-15 323 err_add_memory: a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 324 kasan_remove_zero_shadow(__va(range->start), range_len(range)); 0207df4fa1a869 kernel/memremap.c Andrey Ryabinin 2018-08-17 325 err_kasan: a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 326 untrack_pfn(NULL, PHYS_PFN(range->start), range_len(range)); 9049771f7d5490 kernel/memremap.c Dan Williams 2016-09-07 327 err_pfn_remap: a4574f63edc6f7 mm/memremap.c Dan Williams 2020-10-13 328 pgmap_array_delete(range); b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 329 return error; b7b3c01b191596 mm/memremap.c Dan Williams 2020-10-13 330 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org