* [hnaz-mm:master 291/410] mm/mmap.c:850 __vma_adjust() error: uninitialized symbol 'next_next'.
@ 2022-04-29 23:15 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-04-29 23:15 UTC (permalink / raw)
To: kbuild
[-- 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
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-04-29 23:15 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-29 23:15 [hnaz-mm:master 291/410] mm/mmap.c:850 __vma_adjust() error: uninitialized symbol 'next_next' 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.