linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [linux-next:master 10191/10581] mm/memremap.c:270 pagemap_range() warn: missing error code 'error'
@ 2021-02-15 12:40 Dan Carpenter
  2021-02-18 22:29 ` Andrew Morton
  0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2021-02-15 12:40 UTC (permalink / raw)
  To: kbuild, Anshuman Khandual
  Cc: lkp, kbuild-all, Linux Memory Management List, David Hildenbrand,
	Oscar Salvador, Andrew Morton

[-- Attachment #1: Type: text/plain, Size: 11495 bytes --]

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 <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

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, &params->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

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 37889 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [linux-next:master 10191/10581] mm/memremap.c:270 pagemap_range() warn: missing error code 'error'
  2021-02-15 12:40 [linux-next:master 10191/10581] mm/memremap.c:270 pagemap_range() warn: missing error code 'error' Dan Carpenter
@ 2021-02-18 22:29 ` Andrew Morton
  0 siblings, 0 replies; 2+ messages in thread
From: Andrew Morton @ 2021-02-18 22:29 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: kbuild, Anshuman Khandual, lkp, kbuild-all,
	Linux Memory Management List, David Hildenbrand, Oscar Salvador

On Mon, 15 Feb 2021 15:40:53 +0300 Dan Carpenter <dan.carpenter@oracle.com> wrote:

> 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 <lkp@intel.com>
> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
> 
> smatch warnings:
> mm/memremap.c:270 pagemap_range() warn: missing error code 'error'
> 

Thanks, I did this:

--- a/mm/memremap.c~mm-memory_hotplug-prevalidate-the-address-range-being-added-with-platform-fix
+++ a/mm/memremap.c
@@ -266,8 +266,10 @@ static int pagemap_range(struct dev_page
 	if (error)
 		goto err_pfn_remap;
 
-	if (!mhp_range_allowed(range->start, range_len(range), !is_private))
+	if (!mhp_range_allowed(range->start, range_len(range), !is_private)) {
+		error = -EINVAL;
 		goto err_pfn_remap;
+	}
 
 	mem_hotplug_begin();
 
_




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-02-18 22:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-15 12:40 [linux-next:master 10191/10581] mm/memremap.c:270 pagemap_range() warn: missing error code 'error' Dan Carpenter
2021-02-18 22:29 ` Andrew Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).