llvm.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [akpm-mm:mm-unstable 282/290] mm/mmap.c:939:11: warning: variable 'next' is used uninitialized whenever 'if' condition is false
@ 2023-03-22 20:50 kernel test robot
  2023-03-22 20:53 ` Lorenzo Stoakes
  0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2023-03-22 20:50 UTC (permalink / raw)
  To: Lorenzo Stoakes
  Cc: llvm, oe-kbuild-all, Andrew Morton, Linux Memory Management List

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable
head:   39aca4f17e02ee4076b6ab327577c9b1be23775d
commit: e887ecae997ebaaad4d9b93e6a01fd5495ec1bc3 [282/290] mm/mmap/vma_merge: set next to NULL if not applicable
config: i386-randconfig-a002 (https://download.01.org/0day-ci/archive/20230323/202303230412.43XWWGFX-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git/commit/?id=e887ecae997ebaaad4d9b93e6a01fd5495ec1bc3
        git remote add akpm-mm https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git
        git fetch --no-tags akpm-mm mm-unstable
        git checkout e887ecae997ebaaad4d9b93e6a01fd5495ec1bc3
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303230412.43XWWGFX-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> mm/mmap.c:939:11: warning: variable 'next' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
           else if (!curr)
                    ^~~~~
   mm/mmap.c:962:6: note: uninitialized use occurs here
           if (next && mpol_equal(policy, vma_policy(next)) &&
               ^~~~
   mm/mmap.c:939:7: note: remove the 'if' if its condition is always true
           else if (!curr)
                ^~~~~~~~~~
   mm/mmap.c:914:36: note: initialize the variable 'next' to silence this warning
           struct vm_area_struct *curr, *next, *res = NULL;
                                             ^
                                              = NULL
   1 warning generated.


vim +939 mm/mmap.c

   851	
   852	/*
   853	 * Given a mapping request (addr,end,vm_flags,file,pgoff,anon_name),
   854	 * figure out whether that can be merged with its predecessor or its
   855	 * successor.  Or both (it neatly fills a hole).
   856	 *
   857	 * In most cases - when called for mmap, brk or mremap - [addr,end) is
   858	 * certain not to be mapped by the time vma_merge is called; but when
   859	 * called for mprotect, it is certain to be already mapped (either at
   860	 * an offset within prev, or at the start of next), and the flags of
   861	 * this area are about to be changed to vm_flags - and the no-change
   862	 * case has already been eliminated.
   863	 *
   864	 * The following mprotect cases have to be considered, where **** is
   865	 * the area passed down from mprotect_fixup, never extending beyond one
   866	 * vma, PPPP is the previous vma, CCCC is a concurrent vma that starts
   867	 * at the same address as **** and is of the same or larger span, and
   868	 * NNNN the next vma after ****:
   869	 *
   870	 *     ****             ****                   ****
   871	 *    PPPPPPNNNNNN    PPPPPPNNNNNN       PPPPPPCCCCCC
   872	 *    cannot merge    might become       might become
   873	 *                    PPNNNNNNNNNN       PPPPPPPPPPCC
   874	 *    mmap, brk or    case 4 below       case 5 below
   875	 *    mremap move:
   876	 *                        ****               ****
   877	 *                    PPPP    NNNN       PPPPCCCCNNNN
   878	 *                    might become       might become
   879	 *                    PPPPPPPPPPPP 1 or  PPPPPPPPPPPP 6 or
   880	 *                    PPPPPPPPNNNN 2 or  PPPPPPPPNNNN 7 or
   881	 *                    PPPPNNNNNNNN 3     PPPPNNNNNNNN 8
   882	 *
   883	 * It is important for case 8 that the vma CCCC overlapping the
   884	 * region **** is never going to extended over NNNN. Instead NNNN must
   885	 * be extended in region **** and CCCC must be removed. This way in
   886	 * all cases where vma_merge succeeds, the moment vma_merge drops the
   887	 * rmap_locks, the properties of the merged vma will be already
   888	 * correct for the whole merged range. Some of those properties like
   889	 * vm_page_prot/vm_flags may be accessed by rmap_walks and they must
   890	 * be correct for the whole merged range immediately after the
   891	 * rmap_locks are released. Otherwise if NNNN would be removed and
   892	 * CCCC would be extended over the NNNN range, remove_migration_ptes
   893	 * or other rmap walkers (if working on addresses beyond the "end"
   894	 * parameter) may establish ptes with the wrong permissions of CCCC
   895	 * instead of the right permissions of NNNN.
   896	 *
   897	 * In the code below:
   898	 * PPPP is represented by *prev
   899	 * CCCC is represented by *curr or not represented at all (NULL)
   900	 * NNNN is represented by *next or not represented at all (NULL)
   901	 * **** is not represented - it will be merged and the vma containing the
   902	 *      area is returned, or the function will return NULL
   903	 */
   904	struct vm_area_struct *vma_merge(struct vma_iterator *vmi, struct mm_struct *mm,
   905				struct vm_area_struct *prev, unsigned long addr,
   906				unsigned long end, unsigned long vm_flags,
   907				struct anon_vma *anon_vma, struct file *file,
   908				pgoff_t pgoff, struct mempolicy *policy,
   909				struct vm_userfaultfd_ctx vm_userfaultfd_ctx,
   910				struct anon_vma_name *anon_name)
   911	{
   912		pgoff_t pglen = (end - addr) >> PAGE_SHIFT;
   913		pgoff_t vma_pgoff;
   914		struct vm_area_struct *curr, *next, *res = NULL;
   915		struct vm_area_struct *vma, *adjust, *remove, *remove2;
   916		int err = -1;
   917		bool merge_prev = false;
   918		bool merge_next = false;
   919		bool vma_expanded = false;
   920		struct vma_prepare vp;
   921		unsigned long vma_end = end;
   922		long adj_start = 0;
   923		unsigned long vma_start = addr;
   924	
   925		validate_mm(mm);
   926		/*
   927		 * We later require that vma->vm_flags == vm_flags,
   928		 * so this tests vma->vm_flags & VM_SPECIAL, too.
   929		 */
   930		if (vm_flags & VM_SPECIAL)
   931			return NULL;
   932	
   933		/* Does the input range span an existing VMA? (cases 5 - 8) */
   934		curr = find_vma_intersection(mm, prev ? prev->vm_end : 0, end);
   935	
   936		if (curr && end == curr->vm_end)
   937			/* Is there is a VMA immediately adjacent (cases 6 - 8)? */
   938			next = vma_lookup(mm, curr->vm_end);
 > 939		else if (!curr)
   940			/* Is there a VMA next to a hole (case 1 - 3) or prev (4)? */
   941			next = vma_lookup(mm, end);
   942	
   943		/* verify some invariant that must be enforced by the caller */
   944		VM_WARN_ON(prev && addr <= prev->vm_start);
   945		VM_WARN_ON(curr && end > curr->vm_end);
   946		VM_WARN_ON(addr >= end);
   947	
   948		if (prev) {
   949			res = prev;
   950			vma = prev;
   951			vma_start = prev->vm_start;
   952			vma_pgoff = prev->vm_pgoff;
   953			/* Can we merge the predecessor? */
   954			if (prev->vm_end == addr && mpol_equal(vma_policy(prev), policy)
   955			    && can_vma_merge_after(prev, vm_flags, anon_vma, file,
   956					   pgoff, vm_userfaultfd_ctx, anon_name)) {
   957				merge_prev = true;
   958				vma_prev(vmi);
   959			}
   960		}
   961		/* Can we merge the successor? */
   962		if (next && mpol_equal(policy, vma_policy(next)) &&
   963		    can_vma_merge_before(next, vm_flags,
   964					 anon_vma, file, pgoff+pglen,
   965					 vm_userfaultfd_ctx, anon_name)) {
   966			merge_next = true;
   967		}
   968	
   969		remove = remove2 = adjust = NULL;
   970		/* Can we merge both the predecessor and the successor? */
   971		if (merge_prev && merge_next &&
   972		    is_mergeable_anon_vma(prev->anon_vma, next->anon_vma, NULL)) {
   973			remove = next;				/* case 1 */
   974			vma_end = next->vm_end;
   975			err = dup_anon_vma(prev, next);
   976			if (curr) {				/* case 6 */
   977				remove = curr;
   978				remove2 = next;
   979				if (!next->anon_vma)
   980					err = dup_anon_vma(prev, curr);
   981			}
   982		} else if (merge_prev) {
   983			err = 0;				/* case 2 */
   984			if (curr) {
   985				err = dup_anon_vma(prev, curr);
   986				if (end == curr->vm_end) {	/* case 7 */
   987					remove = curr;
   988				} else {			/* case 5 */
   989					adjust = curr;
   990					adj_start = (end - curr->vm_start);
   991				}
   992			}
   993		} else if (merge_next) {
   994			res = next;
   995			if (prev && addr < prev->vm_end) {	/* case 4 */
   996				vma_end = addr;
   997				adjust = next;
   998				adj_start = -(prev->vm_end - addr);
   999				err = dup_anon_vma(next, prev);
  1000			} else {
  1001				vma = next;			/* case 3 */
  1002				vma_start = addr;
  1003				vma_end = next->vm_end;
  1004				vma_pgoff = next->vm_pgoff;
  1005				err = 0;
  1006				if (curr) {			/* case 8 */
  1007					vma_pgoff = curr->vm_pgoff;
  1008					remove = curr;
  1009					err = dup_anon_vma(next, curr);
  1010				}
  1011			}
  1012		}
  1013	
  1014		/* Cannot merge or error in anon_vma clone */
  1015		if (err)
  1016			return NULL;
  1017	
  1018		if (vma_iter_prealloc(vmi))
  1019			return NULL;
  1020	
  1021		init_multi_vma_prep(&vp, vma, adjust, remove, remove2);
  1022		VM_WARN_ON(vp.anon_vma && adjust && adjust->anon_vma &&
  1023			   vp.anon_vma != adjust->anon_vma);
  1024	
  1025		vma_prepare(&vp);
  1026		vma_adjust_trans_huge(vma, vma_start, vma_end, adj_start);
  1027		if (vma_start < vma->vm_start || vma_end > vma->vm_end)
  1028			vma_expanded = true;
  1029	
  1030		vma->vm_start = vma_start;
  1031		vma->vm_end = vma_end;
  1032		vma->vm_pgoff = vma_pgoff;
  1033	
  1034		if (vma_expanded)
  1035			vma_iter_store(vmi, vma);
  1036	
  1037		if (adj_start) {
  1038			adjust->vm_start += adj_start;
  1039			adjust->vm_pgoff += adj_start >> PAGE_SHIFT;
  1040			if (adj_start < 0) {
  1041				WARN_ON(vma_expanded);
  1042				vma_iter_store(vmi, next);
  1043			}
  1044		}
  1045	
  1046		vma_complete(&vp, vmi, mm);
  1047		vma_iter_free(vmi);
  1048		validate_mm(mm);
  1049		khugepaged_enter_vma(res, vm_flags);
  1050	
  1051		return res;
  1052	}
  1053	

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

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

* Re: [akpm-mm:mm-unstable 282/290] mm/mmap.c:939:11: warning: variable 'next' is used uninitialized whenever 'if' condition is false
  2023-03-22 20:50 [akpm-mm:mm-unstable 282/290] mm/mmap.c:939:11: warning: variable 'next' is used uninitialized whenever 'if' condition is false kernel test robot
@ 2023-03-22 20:53 ` Lorenzo Stoakes
  0 siblings, 0 replies; 2+ messages in thread
From: Lorenzo Stoakes @ 2023-03-22 20:53 UTC (permalink / raw)
  To: kernel test robot
  Cc: llvm, oe-kbuild-all, Andrew Morton, Linux Memory Management List

On Thu, Mar 23, 2023 at 04:50:45AM +0800, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable
> head:   39aca4f17e02ee4076b6ab327577c9b1be23775d
> commit: e887ecae997ebaaad4d9b93e6a01fd5495ec1bc3 [282/290] mm/mmap/vma_merge: set next to NULL if not applicable
> config: i386-randconfig-a002 (https://download.01.org/0day-ci/archive/20230323/202303230412.43XWWGFX-lkp@intel.com/config)
> compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
> reproduce (this is a W=1 build):
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git/commit/?id=e887ecae997ebaaad4d9b93e6a01fd5495ec1bc3
>         git remote add akpm-mm https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git
>         git fetch --no-tags akpm-mm mm-unstable
>         git checkout e887ecae997ebaaad4d9b93e6a01fd5495ec1bc3
>         # save the config file
>         mkdir build_dir && cp config build_dir/.config
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 olddefconfig
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash
>
> If you fix the issue, kindly add following tag where applicable
> | Reported-by: kernel test robot <lkp@intel.com>
> | Link: https://lore.kernel.org/oe-kbuild-all/202303230412.43XWWGFX-lkp@intel.com/
>
> All warnings (new ones prefixed by >>):
>
> >> mm/mmap.c:939:11: warning: variable 'next' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
>            else if (!curr)
>                     ^~~~~
>    mm/mmap.c:962:6: note: uninitialized use occurs here
>            if (next && mpol_equal(policy, vma_policy(next)) &&
>                ^~~~
>    mm/mmap.c:939:7: note: remove the 'if' if its condition is always true
>            else if (!curr)
>                 ^~~~~~~~~~
>    mm/mmap.c:914:36: note: initialize the variable 'next' to silence this warning
>            struct vm_area_struct *curr, *next, *res = NULL;
>                                              ^
>                                               = NULL
>    1 warning generated.
>

This has been fixed in the latest revision of this patch series.

>
> vim +939 mm/mmap.c
>
>    851
>    852	/*
>    853	 * Given a mapping request (addr,end,vm_flags,file,pgoff,anon_name),
>    854	 * figure out whether that can be merged with its predecessor or its
>    855	 * successor.  Or both (it neatly fills a hole).
>    856	 *
>    857	 * In most cases - when called for mmap, brk or mremap - [addr,end) is
>    858	 * certain not to be mapped by the time vma_merge is called; but when
>    859	 * called for mprotect, it is certain to be already mapped (either at
>    860	 * an offset within prev, or at the start of next), and the flags of
>    861	 * this area are about to be changed to vm_flags - and the no-change
>    862	 * case has already been eliminated.
>    863	 *
>    864	 * The following mprotect cases have to be considered, where **** is
>    865	 * the area passed down from mprotect_fixup, never extending beyond one
>    866	 * vma, PPPP is the previous vma, CCCC is a concurrent vma that starts
>    867	 * at the same address as **** and is of the same or larger span, and
>    868	 * NNNN the next vma after ****:
>    869	 *
>    870	 *     ****             ****                   ****
>    871	 *    PPPPPPNNNNNN    PPPPPPNNNNNN       PPPPPPCCCCCC
>    872	 *    cannot merge    might become       might become
>    873	 *                    PPNNNNNNNNNN       PPPPPPPPPPCC
>    874	 *    mmap, brk or    case 4 below       case 5 below
>    875	 *    mremap move:
>    876	 *                        ****               ****
>    877	 *                    PPPP    NNNN       PPPPCCCCNNNN
>    878	 *                    might become       might become
>    879	 *                    PPPPPPPPPPPP 1 or  PPPPPPPPPPPP 6 or
>    880	 *                    PPPPPPPPNNNN 2 or  PPPPPPPPNNNN 7 or
>    881	 *                    PPPPNNNNNNNN 3     PPPPNNNNNNNN 8
>    882	 *
>    883	 * It is important for case 8 that the vma CCCC overlapping the
>    884	 * region **** is never going to extended over NNNN. Instead NNNN must
>    885	 * be extended in region **** and CCCC must be removed. This way in
>    886	 * all cases where vma_merge succeeds, the moment vma_merge drops the
>    887	 * rmap_locks, the properties of the merged vma will be already
>    888	 * correct for the whole merged range. Some of those properties like
>    889	 * vm_page_prot/vm_flags may be accessed by rmap_walks and they must
>    890	 * be correct for the whole merged range immediately after the
>    891	 * rmap_locks are released. Otherwise if NNNN would be removed and
>    892	 * CCCC would be extended over the NNNN range, remove_migration_ptes
>    893	 * or other rmap walkers (if working on addresses beyond the "end"
>    894	 * parameter) may establish ptes with the wrong permissions of CCCC
>    895	 * instead of the right permissions of NNNN.
>    896	 *
>    897	 * In the code below:
>    898	 * PPPP is represented by *prev
>    899	 * CCCC is represented by *curr or not represented at all (NULL)
>    900	 * NNNN is represented by *next or not represented at all (NULL)
>    901	 * **** is not represented - it will be merged and the vma containing the
>    902	 *      area is returned, or the function will return NULL
>    903	 */
>    904	struct vm_area_struct *vma_merge(struct vma_iterator *vmi, struct mm_struct *mm,
>    905				struct vm_area_struct *prev, unsigned long addr,
>    906				unsigned long end, unsigned long vm_flags,
>    907				struct anon_vma *anon_vma, struct file *file,
>    908				pgoff_t pgoff, struct mempolicy *policy,
>    909				struct vm_userfaultfd_ctx vm_userfaultfd_ctx,
>    910				struct anon_vma_name *anon_name)
>    911	{
>    912		pgoff_t pglen = (end - addr) >> PAGE_SHIFT;
>    913		pgoff_t vma_pgoff;
>    914		struct vm_area_struct *curr, *next, *res = NULL;
>    915		struct vm_area_struct *vma, *adjust, *remove, *remove2;
>    916		int err = -1;
>    917		bool merge_prev = false;
>    918		bool merge_next = false;
>    919		bool vma_expanded = false;
>    920		struct vma_prepare vp;
>    921		unsigned long vma_end = end;
>    922		long adj_start = 0;
>    923		unsigned long vma_start = addr;
>    924
>    925		validate_mm(mm);
>    926		/*
>    927		 * We later require that vma->vm_flags == vm_flags,
>    928		 * so this tests vma->vm_flags & VM_SPECIAL, too.
>    929		 */
>    930		if (vm_flags & VM_SPECIAL)
>    931			return NULL;
>    932
>    933		/* Does the input range span an existing VMA? (cases 5 - 8) */
>    934		curr = find_vma_intersection(mm, prev ? prev->vm_end : 0, end);
>    935
>    936		if (curr && end == curr->vm_end)
>    937			/* Is there is a VMA immediately adjacent (cases 6 - 8)? */
>    938			next = vma_lookup(mm, curr->vm_end);
>  > 939		else if (!curr)
>    940			/* Is there a VMA next to a hole (case 1 - 3) or prev (4)? */
>    941			next = vma_lookup(mm, end);
>    942
>    943		/* verify some invariant that must be enforced by the caller */
>    944		VM_WARN_ON(prev && addr <= prev->vm_start);
>    945		VM_WARN_ON(curr && end > curr->vm_end);
>    946		VM_WARN_ON(addr >= end);
>    947
>    948		if (prev) {
>    949			res = prev;
>    950			vma = prev;
>    951			vma_start = prev->vm_start;
>    952			vma_pgoff = prev->vm_pgoff;
>    953			/* Can we merge the predecessor? */
>    954			if (prev->vm_end == addr && mpol_equal(vma_policy(prev), policy)
>    955			    && can_vma_merge_after(prev, vm_flags, anon_vma, file,
>    956					   pgoff, vm_userfaultfd_ctx, anon_name)) {
>    957				merge_prev = true;
>    958				vma_prev(vmi);
>    959			}
>    960		}
>    961		/* Can we merge the successor? */
>    962		if (next && mpol_equal(policy, vma_policy(next)) &&
>    963		    can_vma_merge_before(next, vm_flags,
>    964					 anon_vma, file, pgoff+pglen,
>    965					 vm_userfaultfd_ctx, anon_name)) {
>    966			merge_next = true;
>    967		}
>    968
>    969		remove = remove2 = adjust = NULL;
>    970		/* Can we merge both the predecessor and the successor? */
>    971		if (merge_prev && merge_next &&
>    972		    is_mergeable_anon_vma(prev->anon_vma, next->anon_vma, NULL)) {
>    973			remove = next;				/* case 1 */
>    974			vma_end = next->vm_end;
>    975			err = dup_anon_vma(prev, next);
>    976			if (curr) {				/* case 6 */
>    977				remove = curr;
>    978				remove2 = next;
>    979				if (!next->anon_vma)
>    980					err = dup_anon_vma(prev, curr);
>    981			}
>    982		} else if (merge_prev) {
>    983			err = 0;				/* case 2 */
>    984			if (curr) {
>    985				err = dup_anon_vma(prev, curr);
>    986				if (end == curr->vm_end) {	/* case 7 */
>    987					remove = curr;
>    988				} else {			/* case 5 */
>    989					adjust = curr;
>    990					adj_start = (end - curr->vm_start);
>    991				}
>    992			}
>    993		} else if (merge_next) {
>    994			res = next;
>    995			if (prev && addr < prev->vm_end) {	/* case 4 */
>    996				vma_end = addr;
>    997				adjust = next;
>    998				adj_start = -(prev->vm_end - addr);
>    999				err = dup_anon_vma(next, prev);
>   1000			} else {
>   1001				vma = next;			/* case 3 */
>   1002				vma_start = addr;
>   1003				vma_end = next->vm_end;
>   1004				vma_pgoff = next->vm_pgoff;
>   1005				err = 0;
>   1006				if (curr) {			/* case 8 */
>   1007					vma_pgoff = curr->vm_pgoff;
>   1008					remove = curr;
>   1009					err = dup_anon_vma(next, curr);
>   1010				}
>   1011			}
>   1012		}
>   1013
>   1014		/* Cannot merge or error in anon_vma clone */
>   1015		if (err)
>   1016			return NULL;
>   1017
>   1018		if (vma_iter_prealloc(vmi))
>   1019			return NULL;
>   1020
>   1021		init_multi_vma_prep(&vp, vma, adjust, remove, remove2);
>   1022		VM_WARN_ON(vp.anon_vma && adjust && adjust->anon_vma &&
>   1023			   vp.anon_vma != adjust->anon_vma);
>   1024
>   1025		vma_prepare(&vp);
>   1026		vma_adjust_trans_huge(vma, vma_start, vma_end, adj_start);
>   1027		if (vma_start < vma->vm_start || vma_end > vma->vm_end)
>   1028			vma_expanded = true;
>   1029
>   1030		vma->vm_start = vma_start;
>   1031		vma->vm_end = vma_end;
>   1032		vma->vm_pgoff = vma_pgoff;
>   1033
>   1034		if (vma_expanded)
>   1035			vma_iter_store(vmi, vma);
>   1036
>   1037		if (adj_start) {
>   1038			adjust->vm_start += adj_start;
>   1039			adjust->vm_pgoff += adj_start >> PAGE_SHIFT;
>   1040			if (adj_start < 0) {
>   1041				WARN_ON(vma_expanded);
>   1042				vma_iter_store(vmi, next);
>   1043			}
>   1044		}
>   1045
>   1046		vma_complete(&vp, vmi, mm);
>   1047		vma_iter_free(vmi);
>   1048		validate_mm(mm);
>   1049		khugepaged_enter_vma(res, vm_flags);
>   1050
>   1051		return res;
>   1052	}
>   1053
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests

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

end of thread, other threads:[~2023-03-22 20:54 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-22 20:50 [akpm-mm:mm-unstable 282/290] mm/mmap.c:939:11: warning: variable 'next' is used uninitialized whenever 'if' condition is false kernel test robot
2023-03-22 20:53 ` Lorenzo Stoakes

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).