All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: [hnaz-mm:master 291/410] mm/mmap.c:850 __vma_adjust() error: uninitialized symbol 'next_next'.
Date: Sat, 30 Apr 2022 07:15:35 +0800	[thread overview]
Message-ID: <202204300714.hs00NRDM-lkp@intel.com> (raw)

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

CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: "Liam R. Howlett" <Liam.Howlett@Oracle.com>
CC: Johannes Weiner <hannes@cmpxchg.org>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Linux Memory Management List <linux-mm@kvack.org>

tree:   https://github.com/hnaz/linux-mm master
head:   bf4803abaa3e9d2fa207c0675a2d2abf0fd44f66
commit: 48c8a6f751a2c87c2dcfa40442e0ebe3afd7cd76 [291/410] mm: remove rb tree.
:::::: branch date: 3 days ago
:::::: commit date: 3 days ago
config: x86_64-randconfig-m001-20220425 (https://download.01.org/0day-ci/archive/20220430/202204300714.hs00NRDM-lkp(a)intel.com/config)
compiler: gcc-11 (Debian 11.2.0-20) 11.2.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/mmap.c:850 __vma_adjust() error: uninitialized symbol 'next_next'.

vim +/next_next +850 mm/mmap.c

^1da177e4c3f415 Linus Torvalds        2005-04-16  608  
^1da177e4c3f415 Linus Torvalds        2005-04-16  609  /*
^1da177e4c3f415 Linus Torvalds        2005-04-16  610   * We cannot adjust vm_start, vm_end, vm_pgoff fields of a vma that
^1da177e4c3f415 Linus Torvalds        2005-04-16  611   * is already present in an i_mmap tree without adjusting the tree.
^1da177e4c3f415 Linus Torvalds        2005-04-16  612   * The following helper function should be used when such adjustments
^1da177e4c3f415 Linus Torvalds        2005-04-16  613   * are necessary.  The "insert" vma (if any) is to be inserted
^1da177e4c3f415 Linus Torvalds        2005-04-16  614   * before we drop the necessary locks.
^1da177e4c3f415 Linus Torvalds        2005-04-16  615   */
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  616  int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  617  	unsigned long end, pgoff_t pgoff, struct vm_area_struct *insert,
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  618  	struct vm_area_struct *expand)
^1da177e4c3f415 Linus Torvalds        2005-04-16  619  {
^1da177e4c3f415 Linus Torvalds        2005-04-16  620  	struct mm_struct *mm = vma->vm_mm;
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  621  	struct vm_area_struct *next_next, *next = find_vma(mm, vma->vm_end);
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  622  	struct vm_area_struct *orig_vma = vma;
^1da177e4c3f415 Linus Torvalds        2005-04-16  623  	struct address_space *mapping = NULL;
f808c13fd373894 Davidlohr Bueso       2017-09-08  624  	struct rb_root_cached *root = NULL;
012f18004da33ba Rik van Riel          2010-08-09  625  	struct anon_vma *anon_vma = NULL;
^1da177e4c3f415 Linus Torvalds        2005-04-16  626  	struct file *file = vma->vm_file;
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  627  	bool vma_changed = false;
^1da177e4c3f415 Linus Torvalds        2005-04-16  628  	long adjust_next = 0;
^1da177e4c3f415 Linus Torvalds        2005-04-16  629  	int remove_next = 0;
f90a08f5f1a5029 Liam R. Howlett       2022-04-26  630  	MA_STATE(mas, &mm->mm_mt, 0, 0);
734537c9cb725fc Kirill A. Shutemov    2016-07-28  631  	struct vm_area_struct *exporter = NULL, *importer = NULL;
287d97ac0321367 Linus Torvalds        2010-04-10  632  
f90a08f5f1a5029 Liam R. Howlett       2022-04-26  633  	if (next && !insert) {
^1da177e4c3f415 Linus Torvalds        2005-04-16  634  		if (end >= next->vm_end) {
^1da177e4c3f415 Linus Torvalds        2005-04-16  635  			/*
^1da177e4c3f415 Linus Torvalds        2005-04-16  636  			 * vma expands, overlapping all the next, and
^1da177e4c3f415 Linus Torvalds        2005-04-16  637  			 * perhaps the one after too (mprotect case 6).
86d12e471d9f152 Andrea Arcangeli      2016-10-07  638  			 * The only other cases that gets here are
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  639  			 * case 1, case 7 and case 8.
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  640  			 */
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  641  			if (next == expand) {
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  642  				/*
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  643  				 * The only case where we don't expand "vma"
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  644  				 * and we expand "next" instead is case 8.
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  645  				 */
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  646  				VM_WARN_ON(end != next->vm_end);
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  647  				/*
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  648  				 * remove_next == 3 means we're
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  649  				 * removing "vma" and that to do so we
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  650  				 * swapped "vma" and "next".
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  651  				 */
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  652  				remove_next = 3;
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  653  				VM_WARN_ON(file != next->vm_file);
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  654  				swap(vma, next);
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  655  			} else {
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  656  				VM_WARN_ON(expand != vma);
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  657  				/*
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  658  				 * case 1, 6, 7, remove_next == 2 is case 6,
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  659  				 * remove_next == 1 is case 1 or 7.
^1da177e4c3f415 Linus Torvalds        2005-04-16  660  				 */
734537c9cb725fc Kirill A. Shutemov    2016-07-28  661  				remove_next = 1 + (end > next->vm_end);
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  662  				next_next = find_vma(mm, next->vm_end);
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  663  				VM_WARN_ON(remove_next == 2 &&
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  664  					   end != next_next->vm_end);
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  665  				/* trim end to next, for case 6 first pass */
^1da177e4c3f415 Linus Torvalds        2005-04-16  666  				end = next->vm_end;
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  667  			}
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  668  
287d97ac0321367 Linus Torvalds        2010-04-10  669  			exporter = next;
^1da177e4c3f415 Linus Torvalds        2005-04-16  670  			importer = vma;
734537c9cb725fc Kirill A. Shutemov    2016-07-28  671  
734537c9cb725fc Kirill A. Shutemov    2016-07-28  672  			/*
734537c9cb725fc Kirill A. Shutemov    2016-07-28  673  			 * If next doesn't have anon_vma, import from vma after
734537c9cb725fc Kirill A. Shutemov    2016-07-28  674  			 * next, if the vma overlaps with it.
734537c9cb725fc Kirill A. Shutemov    2016-07-28  675  			 */
97a42cd4398162a Andrea Arcangeli      2016-10-07  676  			if (remove_next == 2 && !next->anon_vma)
734537c9cb725fc Kirill A. Shutemov    2016-07-28  677  				exporter = next->vm_next;
734537c9cb725fc Kirill A. Shutemov    2016-07-28  678  
^1da177e4c3f415 Linus Torvalds        2005-04-16  679  		} else if (end > next->vm_start) {
^1da177e4c3f415 Linus Torvalds        2005-04-16  680  			/*
^1da177e4c3f415 Linus Torvalds        2005-04-16  681  			 * vma expands, overlapping part of the next:
^1da177e4c3f415 Linus Torvalds        2005-04-16  682  			 * mprotect case 5 shifting the boundary up.
^1da177e4c3f415 Linus Torvalds        2005-04-16  683  			 */
f9d86a60572295e Wei Yang              2020-10-13  684  			adjust_next = (end - next->vm_start);
287d97ac0321367 Linus Torvalds        2010-04-10  685  			exporter = next;
^1da177e4c3f415 Linus Torvalds        2005-04-16  686  			importer = vma;
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  687  			VM_WARN_ON(expand != importer);
^1da177e4c3f415 Linus Torvalds        2005-04-16  688  		} else if (end < vma->vm_end) {
^1da177e4c3f415 Linus Torvalds        2005-04-16  689  			/*
^1da177e4c3f415 Linus Torvalds        2005-04-16  690  			 * vma shrinks, and !insert tells it's not
^1da177e4c3f415 Linus Torvalds        2005-04-16  691  			 * split_vma inserting another: so it must be
^1da177e4c3f415 Linus Torvalds        2005-04-16  692  			 * mprotect case 4 shifting the boundary down.
^1da177e4c3f415 Linus Torvalds        2005-04-16  693  			 */
f9d86a60572295e Wei Yang              2020-10-13  694  			adjust_next = -(vma->vm_end - end);
287d97ac0321367 Linus Torvalds        2010-04-10  695  			exporter = vma;
^1da177e4c3f415 Linus Torvalds        2005-04-16  696  			importer = next;
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  697  			VM_WARN_ON(expand != importer);
^1da177e4c3f415 Linus Torvalds        2005-04-16  698  		}
^1da177e4c3f415 Linus Torvalds        2005-04-16  699  
5beb49305251e56 Rik van Riel          2010-03-05  700  		/*
5beb49305251e56 Rik van Riel          2010-03-05  701  		 * Easily overlooked: when mprotect shifts the boundary,
5beb49305251e56 Rik van Riel          2010-03-05  702  		 * make sure the expanding vma has anon_vma set if the
5beb49305251e56 Rik van Riel          2010-03-05  703  		 * shrinking vma had, to cover any anon pages imported.
5beb49305251e56 Rik van Riel          2010-03-05  704  		 */
287d97ac0321367 Linus Torvalds        2010-04-10  705  		if (exporter && exporter->anon_vma && !importer->anon_vma) {
c4ea95d7cd08d9f Daniel Forrest        2014-12-02  706  			int error;
c4ea95d7cd08d9f Daniel Forrest        2014-12-02  707  
b800c91a0517071 Konstantin Khlebnikov 2015-01-11  708  			importer->anon_vma = exporter->anon_vma;
c4ea95d7cd08d9f Daniel Forrest        2014-12-02  709  			error = anon_vma_clone(importer, exporter);
3fe89b3e2a7bbf3 Leon Yu               2015-03-25  710  			if (error)
c4ea95d7cd08d9f Daniel Forrest        2014-12-02  711  				return error;
b800c91a0517071 Konstantin Khlebnikov 2015-01-11  712  		}
5beb49305251e56 Rik van Riel          2010-03-05  713  	}
734537c9cb725fc Kirill A. Shutemov    2016-07-28  714  again:
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  715  	vma_adjust_trans_huge(orig_vma, start, end, adjust_next);
37f9f5595c26d3c Kirill A. Shutemov    2016-07-26  716  
f90a08f5f1a5029 Liam R. Howlett       2022-04-26  717  	if (mas_preallocate(&mas, vma, GFP_KERNEL)) {
f90a08f5f1a5029 Liam R. Howlett       2022-04-26  718  		if (exporter && exporter->anon_vma)
f90a08f5f1a5029 Liam R. Howlett       2022-04-26  719  			unlink_anon_vmas(importer);
f90a08f5f1a5029 Liam R. Howlett       2022-04-26  720  		return -ENOMEM;
f90a08f5f1a5029 Liam R. Howlett       2022-04-26  721  	}
f90a08f5f1a5029 Liam R. Howlett       2022-04-26  722  
^1da177e4c3f415 Linus Torvalds        2005-04-16  723  	if (file) {
^1da177e4c3f415 Linus Torvalds        2005-04-16  724  		mapping = file->f_mapping;
^1da177e4c3f415 Linus Torvalds        2005-04-16  725  		root = &mapping->i_mmap;
cbc91f71b51b833 Srikar Dronamraju     2012-04-11  726  		uprobe_munmap(vma, vma->vm_start, vma->vm_end);
682968e0c425c60 Srikar Dronamraju     2012-03-30  727  
682968e0c425c60 Srikar Dronamraju     2012-03-30  728  		if (adjust_next)
27ba0644ea9dfe6 Kirill A. Shutemov    2015-02-10  729  			uprobe_munmap(next, next->vm_start, next->vm_end);
682968e0c425c60 Srikar Dronamraju     2012-03-30  730  
83cde9e8ba95d18 Davidlohr Bueso       2014-12-12  731  		i_mmap_lock_write(mapping);
^1da177e4c3f415 Linus Torvalds        2005-04-16  732  		if (insert) {
^1da177e4c3f415 Linus Torvalds        2005-04-16  733  			/*
6b2dbba8b6ac4df Michel Lespinasse     2012-10-08  734  			 * Put into interval tree now, so instantiated pages
^1da177e4c3f415 Linus Torvalds        2005-04-16  735  			 * are visible to arm/parisc __flush_dcache_page
^1da177e4c3f415 Linus Torvalds        2005-04-16  736  			 * throughout; but we cannot insert into address
^1da177e4c3f415 Linus Torvalds        2005-04-16  737  			 * space until vma start or end is updated.
^1da177e4c3f415 Linus Torvalds        2005-04-16  738  			 */
^1da177e4c3f415 Linus Torvalds        2005-04-16  739  			__vma_link_file(insert);
^1da177e4c3f415 Linus Torvalds        2005-04-16  740  		}
^1da177e4c3f415 Linus Torvalds        2005-04-16  741  	}
^1da177e4c3f415 Linus Torvalds        2005-04-16  742  
012f18004da33ba Rik van Riel          2010-08-09  743  	anon_vma = vma->anon_vma;
bf181b9f9d8dfbb Michel Lespinasse     2012-10-08  744  	if (!anon_vma && adjust_next)
bf181b9f9d8dfbb Michel Lespinasse     2012-10-08  745  		anon_vma = next->anon_vma;
bf181b9f9d8dfbb Michel Lespinasse     2012-10-08  746  	if (anon_vma) {
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  747  		VM_WARN_ON(adjust_next && next->anon_vma &&
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  748  			   anon_vma != next->anon_vma);
4fc3f1d66b1ef0d Ingo Molnar           2012-12-02  749  		anon_vma_lock_write(anon_vma);
bf181b9f9d8dfbb Michel Lespinasse     2012-10-08  750  		anon_vma_interval_tree_pre_update_vma(vma);
bf181b9f9d8dfbb Michel Lespinasse     2012-10-08  751  		if (adjust_next)
bf181b9f9d8dfbb Michel Lespinasse     2012-10-08  752  			anon_vma_interval_tree_pre_update_vma(next);
bf181b9f9d8dfbb Michel Lespinasse     2012-10-08  753  	}
012f18004da33ba Rik van Riel          2010-08-09  754  
0fc48a6e213ab8e Wei Yang              2020-10-13  755  	if (file) {
^1da177e4c3f415 Linus Torvalds        2005-04-16  756  		flush_dcache_mmap_lock(mapping);
6b2dbba8b6ac4df Michel Lespinasse     2012-10-08  757  		vma_interval_tree_remove(vma, root);
^1da177e4c3f415 Linus Torvalds        2005-04-16  758  		if (adjust_next)
6b2dbba8b6ac4df Michel Lespinasse     2012-10-08  759  			vma_interval_tree_remove(next, root);
^1da177e4c3f415 Linus Torvalds        2005-04-16  760  	}
^1da177e4c3f415 Linus Torvalds        2005-04-16  761  
d37371870ceb1d2 Michel Lespinasse     2012-12-11  762  	if (start != vma->vm_start) {
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  763  		if (vma->vm_start < start)
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  764  			vma_mt_szero(mm, vma->vm_start, start);
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  765  		else
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  766  			vma_changed = true;
^1da177e4c3f415 Linus Torvalds        2005-04-16  767  		vma->vm_start = start;
d37371870ceb1d2 Michel Lespinasse     2012-12-11  768  	}
d37371870ceb1d2 Michel Lespinasse     2012-12-11  769  	if (end != vma->vm_end) {
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  770  		if (vma->vm_end > end)
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  771  			vma_mt_szero(mm, end, vma->vm_end);
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  772  		else
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  773  			vma_changed = true;
^1da177e4c3f415 Linus Torvalds        2005-04-16  774  		vma->vm_end = end;
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  775  		if (!next)
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  776  			mm->highest_vm_end = vm_end_gap(vma);
d37371870ceb1d2 Michel Lespinasse     2012-12-11  777  	}
f90a08f5f1a5029 Liam R. Howlett       2022-04-26  778  
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  779  	if (vma_changed)
f90a08f5f1a5029 Liam R. Howlett       2022-04-26  780  		vma_mas_store(vma, &mas);
f90a08f5f1a5029 Liam R. Howlett       2022-04-26  781  
^1da177e4c3f415 Linus Torvalds        2005-04-16  782  	vma->vm_pgoff = pgoff;
^1da177e4c3f415 Linus Torvalds        2005-04-16  783  	if (adjust_next) {
f9d86a60572295e Wei Yang              2020-10-13  784  		next->vm_start += adjust_next;
f9d86a60572295e Wei Yang              2020-10-13  785  		next->vm_pgoff += adjust_next >> PAGE_SHIFT;
f90a08f5f1a5029 Liam R. Howlett       2022-04-26  786  		vma_mas_store(next, &mas);
^1da177e4c3f415 Linus Torvalds        2005-04-16  787  	}
^1da177e4c3f415 Linus Torvalds        2005-04-16  788  
0fc48a6e213ab8e Wei Yang              2020-10-13  789  	if (file) {
^1da177e4c3f415 Linus Torvalds        2005-04-16  790  		if (adjust_next)
6b2dbba8b6ac4df Michel Lespinasse     2012-10-08  791  			vma_interval_tree_insert(next, root);
6b2dbba8b6ac4df Michel Lespinasse     2012-10-08  792  		vma_interval_tree_insert(vma, root);
^1da177e4c3f415 Linus Torvalds        2005-04-16  793  		flush_dcache_mmap_unlock(mapping);
^1da177e4c3f415 Linus Torvalds        2005-04-16  794  	}
^1da177e4c3f415 Linus Torvalds        2005-04-16  795  
^1da177e4c3f415 Linus Torvalds        2005-04-16  796  	if (remove_next) {
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  797  		__vma_unlink_list(mm, next);
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  798  		/* Kill the cache */
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  799  		vmacache_invalidate(mm);
^1da177e4c3f415 Linus Torvalds        2005-04-16  800  		if (file)
^1da177e4c3f415 Linus Torvalds        2005-04-16  801  			__remove_shared_vm_struct(next, file, mapping);
^1da177e4c3f415 Linus Torvalds        2005-04-16  802  	} else if (insert) {
^1da177e4c3f415 Linus Torvalds        2005-04-16  803  		/*
^1da177e4c3f415 Linus Torvalds        2005-04-16  804  		 * split_vma has split insert from vma, and needs
^1da177e4c3f415 Linus Torvalds        2005-04-16  805  		 * us to insert it before dropping the locks
^1da177e4c3f415 Linus Torvalds        2005-04-16  806  		 * (it may either follow vma or precede it).
^1da177e4c3f415 Linus Torvalds        2005-04-16  807  		 */
f90a08f5f1a5029 Liam R. Howlett       2022-04-26  808  		__insert_vm_struct(mm, &mas, insert);
^1da177e4c3f415 Linus Torvalds        2005-04-16  809  	}
^1da177e4c3f415 Linus Torvalds        2005-04-16  810  
bf181b9f9d8dfbb Michel Lespinasse     2012-10-08  811  	if (anon_vma) {
bf181b9f9d8dfbb Michel Lespinasse     2012-10-08  812  		anon_vma_interval_tree_post_update_vma(vma);
bf181b9f9d8dfbb Michel Lespinasse     2012-10-08  813  		if (adjust_next)
bf181b9f9d8dfbb Michel Lespinasse     2012-10-08  814  			anon_vma_interval_tree_post_update_vma(next);
08b52706d505658 Konstantin Khlebnikov 2013-02-22  815  		anon_vma_unlock_write(anon_vma);
bf181b9f9d8dfbb Michel Lespinasse     2012-10-08  816  	}
^1da177e4c3f415 Linus Torvalds        2005-04-16  817  
0fc48a6e213ab8e Wei Yang              2020-10-13  818  	if (file) {
808fbdbea05f1e9 Wei Yang              2020-10-13  819  		i_mmap_unlock_write(mapping);
7b2d81d48a2d8e3 Ingo Molnar           2012-02-17  820  		uprobe_mmap(vma);
2b144498350860b Srikar Dronamraju     2012-02-09  821  
2b144498350860b Srikar Dronamraju     2012-02-09  822  		if (adjust_next)
7b2d81d48a2d8e3 Ingo Molnar           2012-02-17  823  			uprobe_mmap(next);
2b144498350860b Srikar Dronamraju     2012-02-09  824  	}
2b144498350860b Srikar Dronamraju     2012-02-09  825  
^1da177e4c3f415 Linus Torvalds        2005-04-16  826  	if (remove_next) {
925d1c401fa6cfd Matt Helsley          2008-04-29  827  		if (file) {
cbc91f71b51b833 Srikar Dronamraju     2012-04-11  828  			uprobe_munmap(next, next->vm_start, next->vm_end);
^1da177e4c3f415 Linus Torvalds        2005-04-16  829  			fput(file);
925d1c401fa6cfd Matt Helsley          2008-04-29  830  		}
5beb49305251e56 Rik van Riel          2010-03-05  831  		if (next->anon_vma)
5beb49305251e56 Rik van Riel          2010-03-05  832  			anon_vma_merge(vma, next);
^1da177e4c3f415 Linus Torvalds        2005-04-16  833  		mm->map_count--;
3964acd0dbec123 Oleg Nesterov         2013-07-31  834  		mpol_put(vma_policy(next));
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  835  		BUG_ON(vma->vm_end < next->vm_end);
3928d4f5ee37cdc Linus Torvalds        2018-07-21  836  		vm_area_free(next);
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  837  
^1da177e4c3f415 Linus Torvalds        2005-04-16  838  		/*
^1da177e4c3f415 Linus Torvalds        2005-04-16  839  		 * In mprotect's case 6 (see comments on vma_merge),
^1da177e4c3f415 Linus Torvalds        2005-04-16  840  		 * we must remove another next too. It would clutter
^1da177e4c3f415 Linus Torvalds        2005-04-16  841  		 * up the code too much to do both in one go.
^1da177e4c3f415 Linus Torvalds        2005-04-16  842  		 */
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  843  		if (remove_next != 3) {
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  844  			/*
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  845  			 * If "next" was removed and vma->vm_end was
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  846  			 * expanded (up) over it, in turn
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  847  			 * "next->vm_prev->vm_end" changed and the
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  848  			 * "vma->vm_next" gap must be updated.
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  849  			 */
48c8a6f751a2c87 Liam R. Howlett       2022-04-26 @850  			next = next_next;
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  851  		} else {
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  852  			/*
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  853  			 * For the scope of the comment "next" and
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  854  			 * "vma" considered pre-swap(): if "vma" was
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  855  			 * removed, next->vm_start was expanded (down)
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  856  			 * over it and the "next" gap must be updated.
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  857  			 * Because of the swap() the post-swap() "vma"
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  858  			 * actually points to pre-swap() "next"
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  859  			 * (post-swap() "next" as opposed is now a
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  860  			 * dangling pointer).
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  861  			 */
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  862  			next = vma;
e86f15ee64d8ee4 Andrea Arcangeli      2016-10-07  863  		}
734537c9cb725fc Kirill A. Shutemov    2016-07-28  864  		if (remove_next == 2) {
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  865  			mas_reset(&mas);
734537c9cb725fc Kirill A. Shutemov    2016-07-28  866  			remove_next = 1;
734537c9cb725fc Kirill A. Shutemov    2016-07-28  867  			end = next->vm_end;
^1da177e4c3f415 Linus Torvalds        2005-04-16  868  			goto again;
48c8a6f751a2c87 Liam R. Howlett       2022-04-26  869  		} else if (!next) {
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  870  			/*
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  871  			 * If remove_next == 2 we obviously can't
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  872  			 * reach this path.
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  873  			 *
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  874  			 * If remove_next == 3 we can't reach this
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  875  			 * path because pre-swap() next is always not
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  876  			 * NULL. pre-swap() "next" is not being
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  877  			 * removed and its next->vm_end is not altered
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  878  			 * (and furthermore "end" already matches
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  879  			 * next->vm_end in remove_next == 3).
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  880  			 *
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  881  			 * We reach this only in the remove_next == 1
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  882  			 * case if the "next" vma that was removed was
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  883  			 * the highest vma of the mm. However in such
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  884  			 * case next->vm_end == "end" and the extended
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  885  			 * "vma" has vma->vm_end == next->vm_end so
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  886  			 * mm->highest_vm_end doesn't need any update
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  887  			 * in remove_next == 1 case.
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  888  			 */
1be7107fbe18eed Hugh Dickins          2017-06-19  889  			VM_WARN_ON(mm->highest_vm_end != vm_end_gap(vma));
fb8c41e9ad1f356 Andrea Arcangeli      2016-10-07  890  		}
^1da177e4c3f415 Linus Torvalds        2005-04-16  891  	}
2b144498350860b Srikar Dronamraju     2012-02-09  892  	if (insert && file)
7b2d81d48a2d8e3 Ingo Molnar           2012-02-17  893  		uprobe_mmap(insert);
^1da177e4c3f415 Linus Torvalds        2005-04-16  894  
^1da177e4c3f415 Linus Torvalds        2005-04-16  895  	validate_mm(mm);
5beb49305251e56 Rik van Riel          2010-03-05  896  	return 0;
^1da177e4c3f415 Linus Torvalds        2005-04-16  897  }
^1da177e4c3f415 Linus Torvalds        2005-04-16  898  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

                 reply	other threads:[~2022-04-29 23:15 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202204300714.hs00NRDM-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.