All of lore.kernel.org
 help / color / mirror / Atom feed
* fs/nfs/inode.c:1854 nfs_ooo_merge() error: testing array offset 'cnt' after use.
@ 2023-05-06  8:44 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-05-06  8:44 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: NeilBrown <neilb@suse.de>
CC: Anna Schumaker <Anna.Schumaker@Netapp.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   2e1e1337881b0e9844d687982aa54b31b1269b11
commit: 3db63daabe210af32a09533fe7d8d47c711a103c NFSv3: handle out-of-order write replies.
date:   4 weeks ago
:::::: branch date: 6 hours ago
:::::: commit date: 4 weeks ago
config: x86_64-randconfig-m001-20230501 (https://download.01.org/0day-ci/archive/20230506/202305061623.JNCCAx1G-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Link: https://lore.kernel.org/r/202305061623.JNCCAx1G-lkp@intel.com/

smatch warnings:
fs/nfs/inode.c:1854 nfs_ooo_merge() error: testing array offset 'cnt' after use.

vim +/cnt +1854 fs/nfs/inode.c

7b24dacf084005 Trond Myklebust 2021-04-09  1820  
3db63daabe210a NeilBrown       2023-03-22  1821  static void nfs_ooo_merge(struct nfs_inode *nfsi,
3db63daabe210a NeilBrown       2023-03-22  1822  			  u64 start, u64 end)
3db63daabe210a NeilBrown       2023-03-22  1823  {
3db63daabe210a NeilBrown       2023-03-22  1824  	int i, cnt;
3db63daabe210a NeilBrown       2023-03-22  1825  
3db63daabe210a NeilBrown       2023-03-22  1826  	if (nfsi->cache_validity & NFS_INO_DATA_INVAL_DEFER)
3db63daabe210a NeilBrown       2023-03-22  1827  		/* No point merging anything */
3db63daabe210a NeilBrown       2023-03-22  1828  		return;
3db63daabe210a NeilBrown       2023-03-22  1829  
3db63daabe210a NeilBrown       2023-03-22  1830  	if (!nfsi->ooo) {
3db63daabe210a NeilBrown       2023-03-22  1831  		nfsi->ooo = kmalloc(sizeof(*nfsi->ooo), GFP_ATOMIC);
3db63daabe210a NeilBrown       2023-03-22  1832  		if (!nfsi->ooo) {
3db63daabe210a NeilBrown       2023-03-22  1833  			nfsi->cache_validity |= NFS_INO_DATA_INVAL_DEFER;
3db63daabe210a NeilBrown       2023-03-22  1834  			return;
3db63daabe210a NeilBrown       2023-03-22  1835  		}
3db63daabe210a NeilBrown       2023-03-22  1836  		nfsi->ooo->cnt = 0;
3db63daabe210a NeilBrown       2023-03-22  1837  	}
3db63daabe210a NeilBrown       2023-03-22  1838  
3db63daabe210a NeilBrown       2023-03-22  1839  	/* add this range, merging if possible */
3db63daabe210a NeilBrown       2023-03-22  1840  	cnt = nfsi->ooo->cnt;
3db63daabe210a NeilBrown       2023-03-22  1841  	for (i = 0; i < cnt; i++) {
3db63daabe210a NeilBrown       2023-03-22  1842  		if (end == nfsi->ooo->gap[i].start)
3db63daabe210a NeilBrown       2023-03-22  1843  			end = nfsi->ooo->gap[i].end;
3db63daabe210a NeilBrown       2023-03-22  1844  		else if (start == nfsi->ooo->gap[i].end)
3db63daabe210a NeilBrown       2023-03-22  1845  			start = nfsi->ooo->gap[i].start;
3db63daabe210a NeilBrown       2023-03-22  1846  		else
3db63daabe210a NeilBrown       2023-03-22  1847  			continue;
3db63daabe210a NeilBrown       2023-03-22  1848  		/* Remove 'i' from table and loop to insert the new range */
3db63daabe210a NeilBrown       2023-03-22  1849  		cnt -= 1;
3db63daabe210a NeilBrown       2023-03-22  1850  		nfsi->ooo->gap[i] = nfsi->ooo->gap[cnt];
3db63daabe210a NeilBrown       2023-03-22  1851  		i = -1;
3db63daabe210a NeilBrown       2023-03-22  1852  	}
3db63daabe210a NeilBrown       2023-03-22  1853  	if (start != end) {
3db63daabe210a NeilBrown       2023-03-22 @1854  		if (cnt >= ARRAY_SIZE(nfsi->ooo->gap)) {
3db63daabe210a NeilBrown       2023-03-22  1855  			nfsi->cache_validity |= NFS_INO_DATA_INVAL_DEFER;
3db63daabe210a NeilBrown       2023-03-22  1856  			kfree(nfsi->ooo);
3db63daabe210a NeilBrown       2023-03-22  1857  			nfsi->ooo = NULL;
3db63daabe210a NeilBrown       2023-03-22  1858  			return;
3db63daabe210a NeilBrown       2023-03-22  1859  		}
3db63daabe210a NeilBrown       2023-03-22  1860  		nfsi->ooo->gap[cnt].start = start;
3db63daabe210a NeilBrown       2023-03-22  1861  		nfsi->ooo->gap[cnt].end = end;
3db63daabe210a NeilBrown       2023-03-22  1862  		cnt += 1;
3db63daabe210a NeilBrown       2023-03-22  1863  	}
3db63daabe210a NeilBrown       2023-03-22  1864  	nfsi->ooo->cnt = cnt;
3db63daabe210a NeilBrown       2023-03-22  1865  }
3db63daabe210a NeilBrown       2023-03-22  1866  

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

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

only message in thread, other threads:[~2023-05-06  8:45 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-06  8:44 fs/nfs/inode.c:1854 nfs_ooo_merge() error: testing array offset 'cnt' after use 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.