All of lore.kernel.org
 help / color / mirror / Atom feed
* [android-common:android14-6.1 61/120] mm/mmap.c:685 __vma_adjust() error: we previously assumed 'next_next' could be null (see line 681)
@ 2023-10-11  3:31 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-10-11  3:31 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: cros-kernel-buildreports@googlegroups.com

tree:   https://android.googlesource.com/kernel/common android14-6.1
head:   368b752997c762727adf7b15720b5c4ffadcb155
commit: 57b3f8a5ab282f7d9fe6564a310e02675faeba89 [61/120] FROMLIST: mm/mmap: write-lock VMAs in vma_adjust
:::::: branch date: 15 hours ago
:::::: commit date: 4 months ago
config: x86_64-randconfig-161-20230917 (https://download.01.org/0day-ci/archive/20231011/202310111136.THR1huKC-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231011/202310111136.THR1huKC-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@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202310111136.THR1huKC-lkp@intel.com/

smatch warnings:
mm/mmap.c:685 __vma_adjust() error: we previously assumed 'next_next' could be null (see line 681)

vim +/next_next +685 mm/mmap.c

4dd1b84140c1b8 Liam R. Howlett       2022-09-06  614  
^1da177e4c3f41 Linus Torvalds        2005-04-16  615  /*
^1da177e4c3f41 Linus Torvalds        2005-04-16  616   * We cannot adjust vm_start, vm_end, vm_pgoff fields of a vma that
^1da177e4c3f41 Linus Torvalds        2005-04-16  617   * is already present in an i_mmap tree without adjusting the tree.
^1da177e4c3f41 Linus Torvalds        2005-04-16  618   * The following helper function should be used when such adjustments
^1da177e4c3f41 Linus Torvalds        2005-04-16  619   * are necessary.  The "insert" vma (if any) is to be inserted
^1da177e4c3f41 Linus Torvalds        2005-04-16  620   * before we drop the necessary locks.
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09  621   * 'expand' vma is always locked before it's passed to __vma_adjust()
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09  622   * from vma_merge() because vma should not change from the moment
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09  623   * can_vma_merge_{before|after} decision is made.
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09  624   * 'insert' vma is used only by __split_vma() and it's always a brand
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09  625   * new vma which is not yet added into mm's vma tree, therefore no need
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09  626   * to lock it.
^1da177e4c3f41 Linus Torvalds        2005-04-16  627   */
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  628  int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  629  	unsigned long end, pgoff_t pgoff, struct vm_area_struct *insert,
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  630  	struct vm_area_struct *expand)
^1da177e4c3f41 Linus Torvalds        2005-04-16  631  {
^1da177e4c3f41 Linus Torvalds        2005-04-16  632  	struct mm_struct *mm = vma->vm_mm;
1cd916d0340d0f Andrew Morton         2022-10-18  633  	struct vm_area_struct *next_next = NULL;	/* uninit var warning */
1cd916d0340d0f Andrew Morton         2022-10-18  634  	struct vm_area_struct *next = find_vma(mm, vma->vm_end);
524e00b36e8c54 Liam R. Howlett       2022-09-06  635  	struct vm_area_struct *orig_vma = vma;
^1da177e4c3f41 Linus Torvalds        2005-04-16  636  	struct address_space *mapping = NULL;
f808c13fd37389 Davidlohr Bueso       2017-09-08  637  	struct rb_root_cached *root = NULL;
012f18004da33b Rik van Riel          2010-08-09  638  	struct anon_vma *anon_vma = NULL;
^1da177e4c3f41 Linus Torvalds        2005-04-16  639  	struct file *file = vma->vm_file;
524e00b36e8c54 Liam R. Howlett       2022-09-06  640  	bool vma_changed = false;
^1da177e4c3f41 Linus Torvalds        2005-04-16  641  	long adjust_next = 0;
^1da177e4c3f41 Linus Torvalds        2005-04-16  642  	int remove_next = 0;
b802573f44901b Liam R. Howlett       2023-05-01  643  	MA_STATE(mas, &mm->mm_mt, start, end - 1);
734537c9cb725f Kirill A. Shutemov    2016-07-28  644  	struct vm_area_struct *exporter = NULL, *importer = NULL;
287d97ac032136 Linus Torvalds        2010-04-10  645  
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09  646  	vma_start_write(vma);
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09  647  	if (next)
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09  648  		vma_start_write(next);
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09  649  
d4af56c5c7c678 Liam R. Howlett       2022-09-06  650  	if (next && !insert) {
^1da177e4c3f41 Linus Torvalds        2005-04-16  651  		if (end >= next->vm_end) {
^1da177e4c3f41 Linus Torvalds        2005-04-16  652  			/*
^1da177e4c3f41 Linus Torvalds        2005-04-16  653  			 * vma expands, overlapping all the next, and
^1da177e4c3f41 Linus Torvalds        2005-04-16  654  			 * perhaps the one after too (mprotect case 6).
86d12e471d9f15 Andrea Arcangeli      2016-10-07  655  			 * The only other cases that gets here are
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  656  			 * case 1, case 7 and case 8.
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  657  			 */
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  658  			if (next == expand) {
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  659  				/*
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  660  				 * The only case where we don't expand "vma"
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  661  				 * and we expand "next" instead is case 8.
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  662  				 */
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  663  				VM_WARN_ON(end != next->vm_end);
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  664  				/*
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  665  				 * remove_next == 3 means we're
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  666  				 * removing "vma" and that to do so we
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  667  				 * swapped "vma" and "next".
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  668  				 */
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  669  				remove_next = 3;
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  670  				VM_WARN_ON(file != next->vm_file);
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  671  				swap(vma, next);
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  672  			} else {
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  673  				VM_WARN_ON(expand != vma);
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  674  				/*
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  675  				 * case 1, 6, 7, remove_next == 2 is case 6,
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  676  				 * remove_next == 1 is case 1 or 7.
^1da177e4c3f41 Linus Torvalds        2005-04-16  677  				 */
734537c9cb725f Kirill A. Shutemov    2016-07-28  678  				remove_next = 1 + (end > next->vm_end);
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09  679  				if (remove_next == 2) {
d4af56c5c7c678 Liam R. Howlett       2022-09-06  680  					next_next = find_vma(mm, next->vm_end);
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09 @681  					if (next_next)
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09  682  						vma_start_write(next_next);
57b3f8a5ab282f Suren Baghdasaryan    2023-01-09  683  				}
d4af56c5c7c678 Liam R. Howlett       2022-09-06  684  
e86f15ee64d8ee Andrea Arcangeli      2016-10-07 @685  				VM_WARN_ON(remove_next == 2 &&
763ecb035029f5 Liam R. Howlett       2022-09-06  686  					   end != next_next->vm_end);
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  687  			}
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  688  
287d97ac032136 Linus Torvalds        2010-04-10  689  			exporter = next;
^1da177e4c3f41 Linus Torvalds        2005-04-16  690  			importer = vma;
734537c9cb725f Kirill A. Shutemov    2016-07-28  691  
734537c9cb725f Kirill A. Shutemov    2016-07-28  692  			/*
734537c9cb725f Kirill A. Shutemov    2016-07-28  693  			 * If next doesn't have anon_vma, import from vma after
734537c9cb725f Kirill A. Shutemov    2016-07-28  694  			 * next, if the vma overlaps with it.
734537c9cb725f Kirill A. Shutemov    2016-07-28  695  			 */
97a42cd4398162 Andrea Arcangeli      2016-10-07  696  			if (remove_next == 2 && !next->anon_vma)
763ecb035029f5 Liam R. Howlett       2022-09-06  697  				exporter = next_next;
734537c9cb725f Kirill A. Shutemov    2016-07-28  698  
^1da177e4c3f41 Linus Torvalds        2005-04-16  699  		} else if (end > next->vm_start) {
^1da177e4c3f41 Linus Torvalds        2005-04-16  700  			/*
^1da177e4c3f41 Linus Torvalds        2005-04-16  701  			 * vma expands, overlapping part of the next:
^1da177e4c3f41 Linus Torvalds        2005-04-16  702  			 * mprotect case 5 shifting the boundary up.
^1da177e4c3f41 Linus Torvalds        2005-04-16  703  			 */
f9d86a60572295 Wei Yang              2020-10-13  704  			adjust_next = (end - next->vm_start);
287d97ac032136 Linus Torvalds        2010-04-10  705  			exporter = next;
^1da177e4c3f41 Linus Torvalds        2005-04-16  706  			importer = vma;
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  707  			VM_WARN_ON(expand != importer);
^1da177e4c3f41 Linus Torvalds        2005-04-16  708  		} else if (end < vma->vm_end) {
^1da177e4c3f41 Linus Torvalds        2005-04-16  709  			/*
^1da177e4c3f41 Linus Torvalds        2005-04-16  710  			 * vma shrinks, and !insert tells it's not
^1da177e4c3f41 Linus Torvalds        2005-04-16  711  			 * split_vma inserting another: so it must be
^1da177e4c3f41 Linus Torvalds        2005-04-16  712  			 * mprotect case 4 shifting the boundary down.
^1da177e4c3f41 Linus Torvalds        2005-04-16  713  			 */
f9d86a60572295 Wei Yang              2020-10-13  714  			adjust_next = -(vma->vm_end - end);
287d97ac032136 Linus Torvalds        2010-04-10  715  			exporter = vma;
^1da177e4c3f41 Linus Torvalds        2005-04-16  716  			importer = next;
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  717  			VM_WARN_ON(expand != importer);
^1da177e4c3f41 Linus Torvalds        2005-04-16  718  		}
^1da177e4c3f41 Linus Torvalds        2005-04-16  719  
5beb49305251e5 Rik van Riel          2010-03-05  720  		/*
5beb49305251e5 Rik van Riel          2010-03-05  721  		 * Easily overlooked: when mprotect shifts the boundary,
5beb49305251e5 Rik van Riel          2010-03-05  722  		 * make sure the expanding vma has anon_vma set if the
5beb49305251e5 Rik van Riel          2010-03-05  723  		 * shrinking vma had, to cover any anon pages imported.
5beb49305251e5 Rik van Riel          2010-03-05  724  		 */
287d97ac032136 Linus Torvalds        2010-04-10  725  		if (exporter && exporter->anon_vma && !importer->anon_vma) {
c4ea95d7cd08d9 Daniel Forrest        2014-12-02  726  			int error;
c4ea95d7cd08d9 Daniel Forrest        2014-12-02  727  
b800c91a051707 Konstantin Khlebnikov 2015-01-11  728  			importer->anon_vma = exporter->anon_vma;
c4ea95d7cd08d9 Daniel Forrest        2014-12-02  729  			error = anon_vma_clone(importer, exporter);
3fe89b3e2a7bbf Leon Yu               2015-03-25  730  			if (error)
c4ea95d7cd08d9 Daniel Forrest        2014-12-02  731  				return error;
b800c91a051707 Konstantin Khlebnikov 2015-01-11  732  		}
5beb49305251e5 Rik van Riel          2010-03-05  733  	}
37f9f5595c26d3 Kirill A. Shutemov    2016-07-26  734  
aede79b81ecd09 Liam R. Howlett       2023-05-01  735  	if (adjust_next < 0)
aede79b81ecd09 Liam R. Howlett       2023-05-01  736  		mas_set_range(&mas, next->vm_start + adjust_next,
aede79b81ecd09 Liam R. Howlett       2023-05-01  737  			      next->vm_end - 1);
aede79b81ecd09 Liam R. Howlett       2023-05-01  738  	else if (insert)
aede79b81ecd09 Liam R. Howlett       2023-05-01  739  		mas_set_range(&mas, insert->vm_start, insert->vm_end - 1);
aede79b81ecd09 Liam R. Howlett       2023-05-01  740  
aede79b81ecd09 Liam R. Howlett       2023-05-01  741  
d4af56c5c7c678 Liam R. Howlett       2022-09-06  742  	if (mas_preallocate(&mas, vma, GFP_KERNEL))
d4af56c5c7c678 Liam R. Howlett       2022-09-06  743  		return -ENOMEM;
d4af56c5c7c678 Liam R. Howlett       2022-09-06  744  
d4af56c5c7c678 Liam R. Howlett       2022-09-06  745  	vma_adjust_trans_huge(orig_vma, start, end, adjust_next);
^1da177e4c3f41 Linus Torvalds        2005-04-16  746  	if (file) {
^1da177e4c3f41 Linus Torvalds        2005-04-16  747  		mapping = file->f_mapping;
^1da177e4c3f41 Linus Torvalds        2005-04-16  748  		root = &mapping->i_mmap;
cbc91f71b51b83 Srikar Dronamraju     2012-04-11  749  		uprobe_munmap(vma, vma->vm_start, vma->vm_end);
682968e0c425c6 Srikar Dronamraju     2012-03-30  750  
682968e0c425c6 Srikar Dronamraju     2012-03-30  751  		if (adjust_next)
27ba0644ea9dfe Kirill A. Shutemov    2015-02-10  752  			uprobe_munmap(next, next->vm_start, next->vm_end);
682968e0c425c6 Srikar Dronamraju     2012-03-30  753  
83cde9e8ba95d1 Davidlohr Bueso       2014-12-12  754  		i_mmap_lock_write(mapping);
c154124fe925a4 Liam R. Howlett       2022-09-06  755  		if (insert && insert->vm_file) {
^1da177e4c3f41 Linus Torvalds        2005-04-16  756  			/*
6b2dbba8b6ac4d Michel Lespinasse     2012-10-08  757  			 * Put into interval tree now, so instantiated pages
^1da177e4c3f41 Linus Torvalds        2005-04-16  758  			 * are visible to arm/parisc __flush_dcache_page
^1da177e4c3f41 Linus Torvalds        2005-04-16  759  			 * throughout; but we cannot insert into address
^1da177e4c3f41 Linus Torvalds        2005-04-16  760  			 * space until vma start or end is updated.
^1da177e4c3f41 Linus Torvalds        2005-04-16  761  			 */
c154124fe925a4 Liam R. Howlett       2022-09-06  762  			__vma_link_file(insert, insert->vm_file->f_mapping);
^1da177e4c3f41 Linus Torvalds        2005-04-16  763  		}
^1da177e4c3f41 Linus Torvalds        2005-04-16  764  	}
^1da177e4c3f41 Linus Torvalds        2005-04-16  765  
012f18004da33b Rik van Riel          2010-08-09  766  	anon_vma = vma->anon_vma;
bf181b9f9d8dfb Michel Lespinasse     2012-10-08  767  	if (!anon_vma && adjust_next)
bf181b9f9d8dfb Michel Lespinasse     2012-10-08  768  		anon_vma = next->anon_vma;
bf181b9f9d8dfb Michel Lespinasse     2012-10-08  769  	if (anon_vma) {
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  770  		VM_WARN_ON(adjust_next && next->anon_vma &&
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  771  			   anon_vma != next->anon_vma);
4fc3f1d66b1ef0 Ingo Molnar           2012-12-02  772  		anon_vma_lock_write(anon_vma);
bf181b9f9d8dfb Michel Lespinasse     2012-10-08  773  		anon_vma_interval_tree_pre_update_vma(vma);
bf181b9f9d8dfb Michel Lespinasse     2012-10-08  774  		if (adjust_next)
bf181b9f9d8dfb Michel Lespinasse     2012-10-08  775  			anon_vma_interval_tree_pre_update_vma(next);
bf181b9f9d8dfb Michel Lespinasse     2012-10-08  776  	}
012f18004da33b Rik van Riel          2010-08-09  777  
0fc48a6e213ab8 Wei Yang              2020-10-13  778  	if (file) {
^1da177e4c3f41 Linus Torvalds        2005-04-16  779  		flush_dcache_mmap_lock(mapping);
6b2dbba8b6ac4d Michel Lespinasse     2012-10-08  780  		vma_interval_tree_remove(vma, root);
^1da177e4c3f41 Linus Torvalds        2005-04-16  781  		if (adjust_next)
6b2dbba8b6ac4d Michel Lespinasse     2012-10-08  782  			vma_interval_tree_remove(next, root);
^1da177e4c3f41 Linus Torvalds        2005-04-16  783  	}
^1da177e4c3f41 Linus Torvalds        2005-04-16  784  
d37371870ceb1d Michel Lespinasse     2012-12-11  785  	if (start != vma->vm_start) {
aede79b81ecd09 Liam R. Howlett       2023-05-01  786  		if ((vma->vm_start < start) && !insert) {
524e00b36e8c54 Liam R. Howlett       2022-09-06  787  			vma_mas_szero(&mas, vma->vm_start, start);
3b0e81a1cdc9af Liam R. Howlett       2022-09-06  788  			VM_WARN_ON(insert && insert->vm_start > vma->vm_start);
aede79b81ecd09 Liam R. Howlett       2023-05-01  789  		} else if (!insert) {
524e00b36e8c54 Liam R. Howlett       2022-09-06  790  			vma_changed = true;
3b0e81a1cdc9af Liam R. Howlett       2022-09-06  791  		}
^1da177e4c3f41 Linus Torvalds        2005-04-16  792  		vma->vm_start = start;
d37371870ceb1d Michel Lespinasse     2012-12-11  793  	}
d37371870ceb1d Michel Lespinasse     2012-12-11  794  	if (end != vma->vm_end) {
3b0e81a1cdc9af Liam R. Howlett       2022-09-06  795  		if (vma->vm_end > end) {
aede79b81ecd09 Liam R. Howlett       2023-05-01  796  			if (adjust_next >= 0 && !insert) {
524e00b36e8c54 Liam R. Howlett       2022-09-06  797  				vma_mas_szero(&mas, end, vma->vm_end);
763ecb035029f5 Liam R. Howlett       2022-09-06  798  				mas_reset(&mas);
3b0e81a1cdc9af Liam R. Howlett       2022-09-06  799  				VM_WARN_ON(insert &&
3b0e81a1cdc9af Liam R. Howlett       2022-09-06  800  					   insert->vm_end < vma->vm_end);
3b0e81a1cdc9af Liam R. Howlett       2022-09-06  801  			}
aede79b81ecd09 Liam R. Howlett       2023-05-01  802  		} else if (!insert) {
524e00b36e8c54 Liam R. Howlett       2022-09-06  803  			vma_changed = true;
3b0e81a1cdc9af Liam R. Howlett       2022-09-06  804  		}
^1da177e4c3f41 Linus Torvalds        2005-04-16  805  		vma->vm_end = end;
d37371870ceb1d Michel Lespinasse     2012-12-11  806  	}
d4af56c5c7c678 Liam R. Howlett       2022-09-06  807  
524e00b36e8c54 Liam R. Howlett       2022-09-06  808  	if (vma_changed)
d4af56c5c7c678 Liam R. Howlett       2022-09-06  809  		vma_mas_store(vma, &mas);
d4af56c5c7c678 Liam R. Howlett       2022-09-06  810  
^1da177e4c3f41 Linus Torvalds        2005-04-16  811  	vma->vm_pgoff = pgoff;
^1da177e4c3f41 Linus Torvalds        2005-04-16  812  	if (adjust_next) {
f9d86a60572295 Wei Yang              2020-10-13  813  		next->vm_start += adjust_next;
f9d86a60572295 Wei Yang              2020-10-13  814  		next->vm_pgoff += adjust_next >> PAGE_SHIFT;
d4af56c5c7c678 Liam R. Howlett       2022-09-06  815  		vma_mas_store(next, &mas);
^1da177e4c3f41 Linus Torvalds        2005-04-16  816  	}
^1da177e4c3f41 Linus Torvalds        2005-04-16  817  
0fc48a6e213ab8 Wei Yang              2020-10-13  818  	if (file) {
^1da177e4c3f41 Linus Torvalds        2005-04-16  819  		if (adjust_next)
6b2dbba8b6ac4d Michel Lespinasse     2012-10-08  820  			vma_interval_tree_insert(next, root);
6b2dbba8b6ac4d Michel Lespinasse     2012-10-08  821  		vma_interval_tree_insert(vma, root);
^1da177e4c3f41 Linus Torvalds        2005-04-16  822  		flush_dcache_mmap_unlock(mapping);
^1da177e4c3f41 Linus Torvalds        2005-04-16  823  	}
^1da177e4c3f41 Linus Torvalds        2005-04-16  824  
763ecb035029f5 Liam R. Howlett       2022-09-06  825  	if (remove_next && file) {
^1da177e4c3f41 Linus Torvalds        2005-04-16  826  		__remove_shared_vm_struct(next, file, mapping);
d4af56c5c7c678 Liam R. Howlett       2022-09-06  827  		if (remove_next == 2)
d4af56c5c7c678 Liam R. Howlett       2022-09-06  828  			__remove_shared_vm_struct(next_next, file, mapping);
^1da177e4c3f41 Linus Torvalds        2005-04-16  829  	} else if (insert) {
^1da177e4c3f41 Linus Torvalds        2005-04-16  830  		/*
^1da177e4c3f41 Linus Torvalds        2005-04-16  831  		 * split_vma has split insert from vma, and needs
^1da177e4c3f41 Linus Torvalds        2005-04-16  832  		 * us to insert it before dropping the locks
^1da177e4c3f41 Linus Torvalds        2005-04-16  833  		 * (it may either follow vma or precede it).
^1da177e4c3f41 Linus Torvalds        2005-04-16  834  		 */
763ecb035029f5 Liam R. Howlett       2022-09-06  835  		mas_reset(&mas);
763ecb035029f5 Liam R. Howlett       2022-09-06  836  		vma_mas_store(insert, &mas);
763ecb035029f5 Liam R. Howlett       2022-09-06  837  		mm->map_count++;
^1da177e4c3f41 Linus Torvalds        2005-04-16  838  	}
^1da177e4c3f41 Linus Torvalds        2005-04-16  839  
bf181b9f9d8dfb Michel Lespinasse     2012-10-08  840  	if (anon_vma) {
bf181b9f9d8dfb Michel Lespinasse     2012-10-08  841  		anon_vma_interval_tree_post_update_vma(vma);
bf181b9f9d8dfb Michel Lespinasse     2012-10-08  842  		if (adjust_next)
bf181b9f9d8dfb Michel Lespinasse     2012-10-08  843  			anon_vma_interval_tree_post_update_vma(next);
08b52706d50565 Konstantin Khlebnikov 2013-02-22  844  		anon_vma_unlock_write(anon_vma);
bf181b9f9d8dfb Michel Lespinasse     2012-10-08  845  	}
^1da177e4c3f41 Linus Torvalds        2005-04-16  846  
0fc48a6e213ab8 Wei Yang              2020-10-13  847  	if (file) {
808fbdbea05f1e Wei Yang              2020-10-13  848  		i_mmap_unlock_write(mapping);
7b2d81d48a2d8e Ingo Molnar           2012-02-17  849  		uprobe_mmap(vma);
2b144498350860 Srikar Dronamraju     2012-02-09  850  
2b144498350860 Srikar Dronamraju     2012-02-09  851  		if (adjust_next)
7b2d81d48a2d8e Ingo Molnar           2012-02-17  852  			uprobe_mmap(next);
2b144498350860 Srikar Dronamraju     2012-02-09  853  	}
2b144498350860 Srikar Dronamraju     2012-02-09  854  
^1da177e4c3f41 Linus Torvalds        2005-04-16  855  	if (remove_next) {
d4af56c5c7c678 Liam R. Howlett       2022-09-06  856  again:
925d1c401fa6cf Matt Helsley          2008-04-29  857  		if (file) {
cbc91f71b51b83 Srikar Dronamraju     2012-04-11  858  			uprobe_munmap(next, next->vm_start, next->vm_end);
^1da177e4c3f41 Linus Torvalds        2005-04-16  859  			fput(file);
925d1c401fa6cf Matt Helsley          2008-04-29  860  		}
5beb49305251e5 Rik van Riel          2010-03-05  861  		if (next->anon_vma)
5beb49305251e5 Rik van Riel          2010-03-05  862  			anon_vma_merge(vma, next);
^1da177e4c3f41 Linus Torvalds        2005-04-16  863  		mm->map_count--;
3964acd0dbec12 Oleg Nesterov         2013-07-31  864  		mpol_put(vma_policy(next));
524e00b36e8c54 Liam R. Howlett       2022-09-06  865  		if (remove_next != 2)
524e00b36e8c54 Liam R. Howlett       2022-09-06  866  			BUG_ON(vma->vm_end < next->vm_end);
3928d4f5ee37cd Linus Torvalds        2018-07-21  867  		vm_area_free(next);
524e00b36e8c54 Liam R. Howlett       2022-09-06  868  
^1da177e4c3f41 Linus Torvalds        2005-04-16  869  		/*
^1da177e4c3f41 Linus Torvalds        2005-04-16  870  		 * In mprotect's case 6 (see comments on vma_merge),
763ecb035029f5 Liam R. Howlett       2022-09-06  871  		 * we must remove next_next too.
e86f15ee64d8ee Andrea Arcangeli      2016-10-07  872  		 */
734537c9cb725f Kirill A. Shutemov    2016-07-28  873  		if (remove_next == 2) {
734537c9cb725f Kirill A. Shutemov    2016-07-28  874  			remove_next = 1;
763ecb035029f5 Liam R. Howlett       2022-09-06  875  			next = next_next;
^1da177e4c3f41 Linus Torvalds        2005-04-16  876  			goto again;
fb8c41e9ad1f35 Andrea Arcangeli      2016-10-07  877  		}
^1da177e4c3f41 Linus Torvalds        2005-04-16  878  	}
2b144498350860 Srikar Dronamraju     2012-02-09  879  	if (insert && file)
7b2d81d48a2d8e Ingo Molnar           2012-02-17  880  		uprobe_mmap(insert);
^1da177e4c3f41 Linus Torvalds        2005-04-16  881  
3b0e81a1cdc9af Liam R. Howlett       2022-09-06  882  	mas_destroy(&mas);
^1da177e4c3f41 Linus Torvalds        2005-04-16  883  	validate_mm(mm);
763ecb035029f5 Liam R. Howlett       2022-09-06  884  
5beb49305251e5 Rik van Riel          2010-03-05  885  	return 0;
^1da177e4c3f41 Linus Torvalds        2005-04-16  886  }
^1da177e4c3f41 Linus Torvalds        2005-04-16  887  

:::::: The code at line 685 was first introduced by commit
:::::: e86f15ee64d8ee46255d964d55f74f5ba9af8c36 mm: vma_merge: fix vm_page_prot SMP race condition against rmap_walk

:::::: TO: Andrea Arcangeli <aarcange@redhat.com>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-10-11  3:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-11  3:31 [android-common:android14-6.1 61/120] mm/mmap.c:685 __vma_adjust() error: we previously assumed 'next_next' could be null (see line 681) kernel test robot

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.