All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org
Subject: [rcu:willy-maple 164/202] fs/proc/task_mmu.c:941 show_smaps_rollup() error: uninitialized symbol 'vma_start'.
Date: Thu, 04 Feb 2021 10:04:55 +0300	[thread overview]
Message-ID: <20210204070455.GA2696@kadam> (raw)

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git willy-maple
head:   7e346d2845b4bd77663394f39fa70456e0084c86
commit: c4e6b1dfcb6f997eb870e859ab84ca9f39572eab [164/202] fs/proc/task_mmu: Stop using linked list and highest_vm_end
config: x86_64-randconfig-m001-20210202 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
fs/proc/task_mmu.c:941 show_smaps_rollup() error: uninitialized symbol 'vma_start'.

vim +/vma_start +941 fs/proc/task_mmu.c

258f669e7e88c1 Vlastimil Babka       2018-08-21  839  static int show_smaps_rollup(struct seq_file *m, void *v)
258f669e7e88c1 Vlastimil Babka       2018-08-21  840  {
258f669e7e88c1 Vlastimil Babka       2018-08-21  841  	struct proc_maps_private *priv = m->private;
258f669e7e88c1 Vlastimil Babka       2018-08-21  842  	struct mem_size_stats mss;
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  843  	struct mm_struct *mm = priv->mm;
258f669e7e88c1 Vlastimil Babka       2018-08-21  844  	struct vm_area_struct *vma;
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  845  	unsigned long vma_start, last_vma_end = 0;
258f669e7e88c1 Vlastimil Babka       2018-08-21  846  	int ret = 0;
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  847  	MA_STATE(mas, &mm->mm_mt, 0, 0);
258f669e7e88c1 Vlastimil Babka       2018-08-21  848  
258f669e7e88c1 Vlastimil Babka       2018-08-21  849  	priv->task = get_proc_task(priv->inode);
258f669e7e88c1 Vlastimil Babka       2018-08-21  850  	if (!priv->task)
258f669e7e88c1 Vlastimil Babka       2018-08-21  851  		return -ESRCH;
258f669e7e88c1 Vlastimil Babka       2018-08-21  852  
258f669e7e88c1 Vlastimil Babka       2018-08-21  853  	if (!mm || !mmget_not_zero(mm)) {
258f669e7e88c1 Vlastimil Babka       2018-08-21  854  		ret = -ESRCH;
258f669e7e88c1 Vlastimil Babka       2018-08-21  855  		goto out_put_task;
258f669e7e88c1 Vlastimil Babka       2018-08-21  856  	}
258f669e7e88c1 Vlastimil Babka       2018-08-21  857  
258f669e7e88c1 Vlastimil Babka       2018-08-21  858  	memset(&mss, 0, sizeof(mss));
258f669e7e88c1 Vlastimil Babka       2018-08-21  859  
d8ed45c5dcd455 Michel Lespinasse     2020-06-08  860  	ret = mmap_read_lock_killable(mm);
a26a9781554857 Konstantin Khlebnikov 2019-07-11  861  	if (ret)
a26a9781554857 Konstantin Khlebnikov 2019-07-11  862  		goto out_put_mm;
a26a9781554857 Konstantin Khlebnikov 2019-07-11  863  
258f669e7e88c1 Vlastimil Babka       2018-08-21  864  	hold_task_mempolicy(priv);
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  865  	vma = mas_find(&mas, 0);
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  866  
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  867  	if (vma)
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  868  		vma_start = vma->vm_start;

"vma_start" not initialized on else path.

258f669e7e88c1 Vlastimil Babka       2018-08-21  869  
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  870  	mas_set(&mas, 0);
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  871  	mas_for_each(&mas, vma, -1) {
03b4b1149308b0 Chinwen Chang         2020-10-13  872  		smap_gather_stats(vma, &mss, 0);
258f669e7e88c1 Vlastimil Babka       2018-08-21  873  		last_vma_end = vma->vm_end;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  874  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  875  		/*
ff9f47f6f00cfe Chinwen Chang         2020-10-13  876  		 * Release mmap_lock temporarily if someone wants to
ff9f47f6f00cfe Chinwen Chang         2020-10-13  877  		 * access it for write request.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  878  		 */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  879  		if (mmap_lock_is_contended(mm)) {
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  880  			mas_pause(&mas);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  881  			mmap_read_unlock(mm);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  882  			ret = mmap_read_lock_killable(mm);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  883  			if (ret) {
ff9f47f6f00cfe Chinwen Chang         2020-10-13  884  				release_task_mempolicy(priv);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  885  				goto out_put_mm;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  886  			}
ff9f47f6f00cfe Chinwen Chang         2020-10-13  887  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  888  			/*
ff9f47f6f00cfe Chinwen Chang         2020-10-13  889  			 * After dropping the lock, there are four cases to
ff9f47f6f00cfe Chinwen Chang         2020-10-13  890  			 * consider. See the following example for explanation.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  891  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  892  			 *   +------+------+-----------+
ff9f47f6f00cfe Chinwen Chang         2020-10-13  893  			 *   | VMA1 | VMA2 | VMA3      |
ff9f47f6f00cfe Chinwen Chang         2020-10-13  894  			 *   +------+------+-----------+
ff9f47f6f00cfe Chinwen Chang         2020-10-13  895  			 *   |      |      |           |
ff9f47f6f00cfe Chinwen Chang         2020-10-13  896  			 *  4k     8k     16k         400k
ff9f47f6f00cfe Chinwen Chang         2020-10-13  897  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  898  			 * Suppose we drop the lock after reading VMA2 due to
ff9f47f6f00cfe Chinwen Chang         2020-10-13  899  			 * contention, then we get:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  900  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  901  			 *	last_vma_end = 16k
ff9f47f6f00cfe Chinwen Chang         2020-10-13  902  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  903  			 * 1) VMA2 is freed, but VMA3 exists:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  904  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  905  			 *    find_vma(mm, 16k - 1) will return VMA3.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  906  			 *    In this case, just continue from VMA3.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  907  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  908  			 * 2) VMA2 still exists:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  909  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  910  			 *    find_vma(mm, 16k - 1) will return VMA2.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  911  			 *    Iterate the loop like the original one.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  912  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  913  			 * 3) No more VMAs can be found:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  914  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  915  			 *    find_vma(mm, 16k - 1) will return NULL.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  916  			 *    No more things to do, just break.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  917  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  918  			 * 4) (last_vma_end - 1) is the middle of a vma (VMA'):
ff9f47f6f00cfe Chinwen Chang         2020-10-13  919  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  920  			 *    find_vma(mm, 16k - 1) will return VMA' whose range
ff9f47f6f00cfe Chinwen Chang         2020-10-13  921  			 *    contains last_vma_end.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  922  			 *    Iterate VMA' from last_vma_end.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  923  			 */
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  924  			mas.index = mas.last = last_vma_end - 1;
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  925  			vma = mas_find(&mas, -1);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  926  			/* Case 3 above */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  927  			if (!vma)
ff9f47f6f00cfe Chinwen Chang         2020-10-13  928  				break;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  929  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  930  			/* Case 1 above */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  931  			if (vma->vm_start >= last_vma_end)
ff9f47f6f00cfe Chinwen Chang         2020-10-13  932  				continue;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  933  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  934  			/* Case 4 above */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  935  			if (vma->vm_end > last_vma_end)
ff9f47f6f00cfe Chinwen Chang         2020-10-13  936  				smap_gather_stats(vma, &mss, last_vma_end);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  937  		}
ff9f47f6f00cfe Chinwen Chang         2020-10-13  938  		/* Case 2 above */
258f669e7e88c1 Vlastimil Babka       2018-08-21  939  	}
258f669e7e88c1 Vlastimil Babka       2018-08-21  940  
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04 @941  	show_vma_header_prefix(m, vma_start, last_vma_end, 0, 0, 0, 0);
                                                                                  ^^^^^^^^^
Uninitialized.

258f669e7e88c1 Vlastimil Babka       2018-08-21  942  	seq_pad(m, ' ');
258f669e7e88c1 Vlastimil Babka       2018-08-21  943  	seq_puts(m, "[rollup]\n");
258f669e7e88c1 Vlastimil Babka       2018-08-21  944  
ee2ad71b0756e9 Luigi Semenzato       2019-07-11  945  	__show_smap(m, &mss, true);
258f669e7e88c1 Vlastimil Babka       2018-08-21  946  
258f669e7e88c1 Vlastimil Babka       2018-08-21  947  	release_task_mempolicy(priv);
d8ed45c5dcd455 Michel Lespinasse     2020-06-08  948  	mmap_read_unlock(mm);
258f669e7e88c1 Vlastimil Babka       2018-08-21  949  
a26a9781554857 Konstantin Khlebnikov 2019-07-11  950  out_put_mm:
a26a9781554857 Konstantin Khlebnikov 2019-07-11  951  	mmput(mm);
258f669e7e88c1 Vlastimil Babka       2018-08-21  952  out_put_task:
258f669e7e88c1 Vlastimil Babka       2018-08-21  953  	put_task_struct(priv->task);
258f669e7e88c1 Vlastimil Babka       2018-08-21  954  	priv->task = NULL;
258f669e7e88c1 Vlastimil Babka       2018-08-21  955  
493b0e9d945fa9 Daniel Colascione     2017-09-06  956  	return ret;
e070ad49f31155 Mauricio Lin          2005-09-03  957  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

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

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: [rcu:willy-maple 164/202] fs/proc/task_mmu.c:941 show_smaps_rollup() error: uninitialized symbol 'vma_start'.
Date: Thu, 04 Feb 2021 10:04:55 +0300	[thread overview]
Message-ID: <20210204070455.GA2696@kadam> (raw)

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git willy-maple
head:   7e346d2845b4bd77663394f39fa70456e0084c86
commit: c4e6b1dfcb6f997eb870e859ab84ca9f39572eab [164/202] fs/proc/task_mmu: Stop using linked list and highest_vm_end
config: x86_64-randconfig-m001-20210202 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
fs/proc/task_mmu.c:941 show_smaps_rollup() error: uninitialized symbol 'vma_start'.

vim +/vma_start +941 fs/proc/task_mmu.c

258f669e7e88c1 Vlastimil Babka       2018-08-21  839  static int show_smaps_rollup(struct seq_file *m, void *v)
258f669e7e88c1 Vlastimil Babka       2018-08-21  840  {
258f669e7e88c1 Vlastimil Babka       2018-08-21  841  	struct proc_maps_private *priv = m->private;
258f669e7e88c1 Vlastimil Babka       2018-08-21  842  	struct mem_size_stats mss;
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  843  	struct mm_struct *mm = priv->mm;
258f669e7e88c1 Vlastimil Babka       2018-08-21  844  	struct vm_area_struct *vma;
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  845  	unsigned long vma_start, last_vma_end = 0;
258f669e7e88c1 Vlastimil Babka       2018-08-21  846  	int ret = 0;
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  847  	MA_STATE(mas, &mm->mm_mt, 0, 0);
258f669e7e88c1 Vlastimil Babka       2018-08-21  848  
258f669e7e88c1 Vlastimil Babka       2018-08-21  849  	priv->task = get_proc_task(priv->inode);
258f669e7e88c1 Vlastimil Babka       2018-08-21  850  	if (!priv->task)
258f669e7e88c1 Vlastimil Babka       2018-08-21  851  		return -ESRCH;
258f669e7e88c1 Vlastimil Babka       2018-08-21  852  
258f669e7e88c1 Vlastimil Babka       2018-08-21  853  	if (!mm || !mmget_not_zero(mm)) {
258f669e7e88c1 Vlastimil Babka       2018-08-21  854  		ret = -ESRCH;
258f669e7e88c1 Vlastimil Babka       2018-08-21  855  		goto out_put_task;
258f669e7e88c1 Vlastimil Babka       2018-08-21  856  	}
258f669e7e88c1 Vlastimil Babka       2018-08-21  857  
258f669e7e88c1 Vlastimil Babka       2018-08-21  858  	memset(&mss, 0, sizeof(mss));
258f669e7e88c1 Vlastimil Babka       2018-08-21  859  
d8ed45c5dcd455 Michel Lespinasse     2020-06-08  860  	ret = mmap_read_lock_killable(mm);
a26a9781554857 Konstantin Khlebnikov 2019-07-11  861  	if (ret)
a26a9781554857 Konstantin Khlebnikov 2019-07-11  862  		goto out_put_mm;
a26a9781554857 Konstantin Khlebnikov 2019-07-11  863  
258f669e7e88c1 Vlastimil Babka       2018-08-21  864  	hold_task_mempolicy(priv);
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  865  	vma = mas_find(&mas, 0);
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  866  
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  867  	if (vma)
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  868  		vma_start = vma->vm_start;

"vma_start" not initialized on else path.

258f669e7e88c1 Vlastimil Babka       2018-08-21  869  
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  870  	mas_set(&mas, 0);
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  871  	mas_for_each(&mas, vma, -1) {
03b4b1149308b0 Chinwen Chang         2020-10-13  872  		smap_gather_stats(vma, &mss, 0);
258f669e7e88c1 Vlastimil Babka       2018-08-21  873  		last_vma_end = vma->vm_end;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  874  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  875  		/*
ff9f47f6f00cfe Chinwen Chang         2020-10-13  876  		 * Release mmap_lock temporarily if someone wants to
ff9f47f6f00cfe Chinwen Chang         2020-10-13  877  		 * access it for write request.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  878  		 */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  879  		if (mmap_lock_is_contended(mm)) {
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  880  			mas_pause(&mas);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  881  			mmap_read_unlock(mm);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  882  			ret = mmap_read_lock_killable(mm);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  883  			if (ret) {
ff9f47f6f00cfe Chinwen Chang         2020-10-13  884  				release_task_mempolicy(priv);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  885  				goto out_put_mm;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  886  			}
ff9f47f6f00cfe Chinwen Chang         2020-10-13  887  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  888  			/*
ff9f47f6f00cfe Chinwen Chang         2020-10-13  889  			 * After dropping the lock, there are four cases to
ff9f47f6f00cfe Chinwen Chang         2020-10-13  890  			 * consider. See the following example for explanation.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  891  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  892  			 *   +------+------+-----------+
ff9f47f6f00cfe Chinwen Chang         2020-10-13  893  			 *   | VMA1 | VMA2 | VMA3      |
ff9f47f6f00cfe Chinwen Chang         2020-10-13  894  			 *   +------+------+-----------+
ff9f47f6f00cfe Chinwen Chang         2020-10-13  895  			 *   |      |      |           |
ff9f47f6f00cfe Chinwen Chang         2020-10-13  896  			 *  4k     8k     16k         400k
ff9f47f6f00cfe Chinwen Chang         2020-10-13  897  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  898  			 * Suppose we drop the lock after reading VMA2 due to
ff9f47f6f00cfe Chinwen Chang         2020-10-13  899  			 * contention, then we get:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  900  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  901  			 *	last_vma_end = 16k
ff9f47f6f00cfe Chinwen Chang         2020-10-13  902  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  903  			 * 1) VMA2 is freed, but VMA3 exists:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  904  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  905  			 *    find_vma(mm, 16k - 1) will return VMA3.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  906  			 *    In this case, just continue from VMA3.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  907  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  908  			 * 2) VMA2 still exists:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  909  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  910  			 *    find_vma(mm, 16k - 1) will return VMA2.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  911  			 *    Iterate the loop like the original one.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  912  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  913  			 * 3) No more VMAs can be found:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  914  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  915  			 *    find_vma(mm, 16k - 1) will return NULL.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  916  			 *    No more things to do, just break.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  917  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  918  			 * 4) (last_vma_end - 1) is the middle of a vma (VMA'):
ff9f47f6f00cfe Chinwen Chang         2020-10-13  919  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  920  			 *    find_vma(mm, 16k - 1) will return VMA' whose range
ff9f47f6f00cfe Chinwen Chang         2020-10-13  921  			 *    contains last_vma_end.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  922  			 *    Iterate VMA' from last_vma_end.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  923  			 */
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  924  			mas.index = mas.last = last_vma_end - 1;
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  925  			vma = mas_find(&mas, -1);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  926  			/* Case 3 above */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  927  			if (!vma)
ff9f47f6f00cfe Chinwen Chang         2020-10-13  928  				break;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  929  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  930  			/* Case 1 above */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  931  			if (vma->vm_start >= last_vma_end)
ff9f47f6f00cfe Chinwen Chang         2020-10-13  932  				continue;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  933  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  934  			/* Case 4 above */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  935  			if (vma->vm_end > last_vma_end)
ff9f47f6f00cfe Chinwen Chang         2020-10-13  936  				smap_gather_stats(vma, &mss, last_vma_end);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  937  		}
ff9f47f6f00cfe Chinwen Chang         2020-10-13  938  		/* Case 2 above */
258f669e7e88c1 Vlastimil Babka       2018-08-21  939  	}
258f669e7e88c1 Vlastimil Babka       2018-08-21  940  
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04 @941  	show_vma_header_prefix(m, vma_start, last_vma_end, 0, 0, 0, 0);
                                                                                  ^^^^^^^^^
Uninitialized.

258f669e7e88c1 Vlastimil Babka       2018-08-21  942  	seq_pad(m, ' ');
258f669e7e88c1 Vlastimil Babka       2018-08-21  943  	seq_puts(m, "[rollup]\n");
258f669e7e88c1 Vlastimil Babka       2018-08-21  944  
ee2ad71b0756e9 Luigi Semenzato       2019-07-11  945  	__show_smap(m, &mss, true);
258f669e7e88c1 Vlastimil Babka       2018-08-21  946  
258f669e7e88c1 Vlastimil Babka       2018-08-21  947  	release_task_mempolicy(priv);
d8ed45c5dcd455 Michel Lespinasse     2020-06-08  948  	mmap_read_unlock(mm);
258f669e7e88c1 Vlastimil Babka       2018-08-21  949  
a26a9781554857 Konstantin Khlebnikov 2019-07-11  950  out_put_mm:
a26a9781554857 Konstantin Khlebnikov 2019-07-11  951  	mmput(mm);
258f669e7e88c1 Vlastimil Babka       2018-08-21  952  out_put_task:
258f669e7e88c1 Vlastimil Babka       2018-08-21  953  	put_task_struct(priv->task);
258f669e7e88c1 Vlastimil Babka       2018-08-21  954  	priv->task = NULL;
258f669e7e88c1 Vlastimil Babka       2018-08-21  955  
493b0e9d945fa9 Daniel Colascione     2017-09-06  956  	return ret;
e070ad49f31155 Mauricio Lin          2005-09-03  957  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

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

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org, "Liam R. Howlett" <Liam.Howlett@oracle.com>
Cc: lkp@intel.com, kbuild-all@lists.01.org, linux-kernel@vger.kernel.org
Subject: [rcu:willy-maple 164/202] fs/proc/task_mmu.c:941 show_smaps_rollup() error: uninitialized symbol 'vma_start'.
Date: Thu, 4 Feb 2021 10:04:55 +0300	[thread overview]
Message-ID: <20210204070455.GA2696@kadam> (raw)

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git willy-maple
head:   7e346d2845b4bd77663394f39fa70456e0084c86
commit: c4e6b1dfcb6f997eb870e859ab84ca9f39572eab [164/202] fs/proc/task_mmu: Stop using linked list and highest_vm_end
config: x86_64-randconfig-m001-20210202 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
fs/proc/task_mmu.c:941 show_smaps_rollup() error: uninitialized symbol 'vma_start'.

vim +/vma_start +941 fs/proc/task_mmu.c

258f669e7e88c1 Vlastimil Babka       2018-08-21  839  static int show_smaps_rollup(struct seq_file *m, void *v)
258f669e7e88c1 Vlastimil Babka       2018-08-21  840  {
258f669e7e88c1 Vlastimil Babka       2018-08-21  841  	struct proc_maps_private *priv = m->private;
258f669e7e88c1 Vlastimil Babka       2018-08-21  842  	struct mem_size_stats mss;
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  843  	struct mm_struct *mm = priv->mm;
258f669e7e88c1 Vlastimil Babka       2018-08-21  844  	struct vm_area_struct *vma;
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  845  	unsigned long vma_start, last_vma_end = 0;
258f669e7e88c1 Vlastimil Babka       2018-08-21  846  	int ret = 0;
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  847  	MA_STATE(mas, &mm->mm_mt, 0, 0);
258f669e7e88c1 Vlastimil Babka       2018-08-21  848  
258f669e7e88c1 Vlastimil Babka       2018-08-21  849  	priv->task = get_proc_task(priv->inode);
258f669e7e88c1 Vlastimil Babka       2018-08-21  850  	if (!priv->task)
258f669e7e88c1 Vlastimil Babka       2018-08-21  851  		return -ESRCH;
258f669e7e88c1 Vlastimil Babka       2018-08-21  852  
258f669e7e88c1 Vlastimil Babka       2018-08-21  853  	if (!mm || !mmget_not_zero(mm)) {
258f669e7e88c1 Vlastimil Babka       2018-08-21  854  		ret = -ESRCH;
258f669e7e88c1 Vlastimil Babka       2018-08-21  855  		goto out_put_task;
258f669e7e88c1 Vlastimil Babka       2018-08-21  856  	}
258f669e7e88c1 Vlastimil Babka       2018-08-21  857  
258f669e7e88c1 Vlastimil Babka       2018-08-21  858  	memset(&mss, 0, sizeof(mss));
258f669e7e88c1 Vlastimil Babka       2018-08-21  859  
d8ed45c5dcd455 Michel Lespinasse     2020-06-08  860  	ret = mmap_read_lock_killable(mm);
a26a9781554857 Konstantin Khlebnikov 2019-07-11  861  	if (ret)
a26a9781554857 Konstantin Khlebnikov 2019-07-11  862  		goto out_put_mm;
a26a9781554857 Konstantin Khlebnikov 2019-07-11  863  
258f669e7e88c1 Vlastimil Babka       2018-08-21  864  	hold_task_mempolicy(priv);
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  865  	vma = mas_find(&mas, 0);
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  866  
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  867  	if (vma)
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  868  		vma_start = vma->vm_start;

"vma_start" not initialized on else path.

258f669e7e88c1 Vlastimil Babka       2018-08-21  869  
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  870  	mas_set(&mas, 0);
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  871  	mas_for_each(&mas, vma, -1) {
03b4b1149308b0 Chinwen Chang         2020-10-13  872  		smap_gather_stats(vma, &mss, 0);
258f669e7e88c1 Vlastimil Babka       2018-08-21  873  		last_vma_end = vma->vm_end;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  874  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  875  		/*
ff9f47f6f00cfe Chinwen Chang         2020-10-13  876  		 * Release mmap_lock temporarily if someone wants to
ff9f47f6f00cfe Chinwen Chang         2020-10-13  877  		 * access it for write request.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  878  		 */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  879  		if (mmap_lock_is_contended(mm)) {
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  880  			mas_pause(&mas);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  881  			mmap_read_unlock(mm);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  882  			ret = mmap_read_lock_killable(mm);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  883  			if (ret) {
ff9f47f6f00cfe Chinwen Chang         2020-10-13  884  				release_task_mempolicy(priv);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  885  				goto out_put_mm;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  886  			}
ff9f47f6f00cfe Chinwen Chang         2020-10-13  887  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  888  			/*
ff9f47f6f00cfe Chinwen Chang         2020-10-13  889  			 * After dropping the lock, there are four cases to
ff9f47f6f00cfe Chinwen Chang         2020-10-13  890  			 * consider. See the following example for explanation.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  891  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  892  			 *   +------+------+-----------+
ff9f47f6f00cfe Chinwen Chang         2020-10-13  893  			 *   | VMA1 | VMA2 | VMA3      |
ff9f47f6f00cfe Chinwen Chang         2020-10-13  894  			 *   +------+------+-----------+
ff9f47f6f00cfe Chinwen Chang         2020-10-13  895  			 *   |      |      |           |
ff9f47f6f00cfe Chinwen Chang         2020-10-13  896  			 *  4k     8k     16k         400k
ff9f47f6f00cfe Chinwen Chang         2020-10-13  897  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  898  			 * Suppose we drop the lock after reading VMA2 due to
ff9f47f6f00cfe Chinwen Chang         2020-10-13  899  			 * contention, then we get:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  900  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  901  			 *	last_vma_end = 16k
ff9f47f6f00cfe Chinwen Chang         2020-10-13  902  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  903  			 * 1) VMA2 is freed, but VMA3 exists:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  904  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  905  			 *    find_vma(mm, 16k - 1) will return VMA3.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  906  			 *    In this case, just continue from VMA3.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  907  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  908  			 * 2) VMA2 still exists:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  909  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  910  			 *    find_vma(mm, 16k - 1) will return VMA2.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  911  			 *    Iterate the loop like the original one.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  912  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  913  			 * 3) No more VMAs can be found:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  914  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  915  			 *    find_vma(mm, 16k - 1) will return NULL.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  916  			 *    No more things to do, just break.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  917  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  918  			 * 4) (last_vma_end - 1) is the middle of a vma (VMA'):
ff9f47f6f00cfe Chinwen Chang         2020-10-13  919  			 *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  920  			 *    find_vma(mm, 16k - 1) will return VMA' whose range
ff9f47f6f00cfe Chinwen Chang         2020-10-13  921  			 *    contains last_vma_end.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  922  			 *    Iterate VMA' from last_vma_end.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  923  			 */
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  924  			mas.index = mas.last = last_vma_end - 1;
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04  925  			vma = mas_find(&mas, -1);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  926  			/* Case 3 above */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  927  			if (!vma)
ff9f47f6f00cfe Chinwen Chang         2020-10-13  928  				break;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  929  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  930  			/* Case 1 above */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  931  			if (vma->vm_start >= last_vma_end)
ff9f47f6f00cfe Chinwen Chang         2020-10-13  932  				continue;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  933  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  934  			/* Case 4 above */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  935  			if (vma->vm_end > last_vma_end)
ff9f47f6f00cfe Chinwen Chang         2020-10-13  936  				smap_gather_stats(vma, &mss, last_vma_end);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  937  		}
ff9f47f6f00cfe Chinwen Chang         2020-10-13  938  		/* Case 2 above */
258f669e7e88c1 Vlastimil Babka       2018-08-21  939  	}
258f669e7e88c1 Vlastimil Babka       2018-08-21  940  
c4e6b1dfcb6f99 Liam R. Howlett       2021-01-04 @941  	show_vma_header_prefix(m, vma_start, last_vma_end, 0, 0, 0, 0);
                                                                                  ^^^^^^^^^
Uninitialized.

258f669e7e88c1 Vlastimil Babka       2018-08-21  942  	seq_pad(m, ' ');
258f669e7e88c1 Vlastimil Babka       2018-08-21  943  	seq_puts(m, "[rollup]\n");
258f669e7e88c1 Vlastimil Babka       2018-08-21  944  
ee2ad71b0756e9 Luigi Semenzato       2019-07-11  945  	__show_smap(m, &mss, true);
258f669e7e88c1 Vlastimil Babka       2018-08-21  946  
258f669e7e88c1 Vlastimil Babka       2018-08-21  947  	release_task_mempolicy(priv);
d8ed45c5dcd455 Michel Lespinasse     2020-06-08  948  	mmap_read_unlock(mm);
258f669e7e88c1 Vlastimil Babka       2018-08-21  949  
a26a9781554857 Konstantin Khlebnikov 2019-07-11  950  out_put_mm:
a26a9781554857 Konstantin Khlebnikov 2019-07-11  951  	mmput(mm);
258f669e7e88c1 Vlastimil Babka       2018-08-21  952  out_put_task:
258f669e7e88c1 Vlastimil Babka       2018-08-21  953  	put_task_struct(priv->task);
258f669e7e88c1 Vlastimil Babka       2018-08-21  954  	priv->task = NULL;
258f669e7e88c1 Vlastimil Babka       2018-08-21  955  
493b0e9d945fa9 Daniel Colascione     2017-09-06  956  	return ret;
e070ad49f31155 Mauricio Lin          2005-09-03  957  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

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

             reply	other threads:[~2021-02-04  7:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-04  7:04 Dan Carpenter [this message]
2021-02-04  7:04 ` [rcu:willy-maple 164/202] fs/proc/task_mmu.c:941 show_smaps_rollup() error: uninitialized symbol 'vma_start' Dan Carpenter
2021-02-04  7:04 ` Dan Carpenter
  -- strict thread matches above, loose matches on Subject: below --
2021-02-03 23:55 kernel test robot

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=20210204070455.GA2696@kadam \
    --to=dan.carpenter@oracle.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.