All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [gfs2:for-next.bob6m 6/11] fs/gfs2/super.c:1443 gfs2_evict_inode() error: potentially dereferencing uninitialized 'metamapping'.
Date: Mon, 24 Aug 2020 13:52:38 +0300	[thread overview]
Message-ID: <20200824105238.GD1793@kadam> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git for-next.bob6m
head:   fd5ce905071cc34294900a21a773d9f8c72f5119
commit: 4b98604ca5531f8d662e07d4a10d5fe98c9d4eae [6/11] gfs2: Create transaction for inodes with i_nlink != 0
config: i386-randconfig-m021-20200820 (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>

New smatch warnings:
fs/gfs2/super.c:1443 gfs2_evict_inode() error: potentially dereferencing uninitialized 'metamapping'.

# https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git/commit/?id=4b98604ca5531f8d662e07d4a10d5fe98c9d4eae
git remote add gfs2 https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git
git fetch --no-tags gfs2 for-next.bob6m
git checkout 4b98604ca5531f8d662e07d4a10d5fe98c9d4eae
vim +/metamapping +1443 fs/gfs2/super.c

d5c1515cf37495 Al Viro             2010-06-07  1332  static void gfs2_evict_inode(struct inode *inode)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1333  {
001e8e8df4283d Steven Whitehouse   2011-03-30  1334  	struct super_block *sb = inode->i_sb;
001e8e8df4283d Steven Whitehouse   2011-03-30  1335  	struct gfs2_sbd *sdp = sb->s_fs_info;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1336  	struct gfs2_inode *ip = GFS2_I(inode);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1337  	struct gfs2_holder gh;
ee530beafeca98 Bob Peterson        2015-12-07  1338  	struct address_space *metamapping;
e7450d984b481c Bob Peterson        2020-08-12  1339  	int nr_revokes;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1340  	int error;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1341  
059788039f1e63 Abhi Das            2014-03-31  1342  	if (test_bit(GIF_FREE_VFS_INODE, &ip->i_flags)) {
059788039f1e63 Abhi Das            2014-03-31  1343  		clear_inode(inode);
059788039f1e63 Abhi Das            2014-03-31  1344  		return;
059788039f1e63 Abhi Das            2014-03-31  1345  	}
059788039f1e63 Abhi Das            2014-03-31  1346  
4b98604ca5531f Bob Peterson        2020-08-12  1347  	if (sb_rdonly(sb))
d5c1515cf37495 Al Viro             2010-06-07  1348  		goto out;
d5c1515cf37495 Al Viro             2010-06-07  1349  
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1350  	if (test_bit(GIF_ALLOC_FAILED, &ip->i_flags)) {
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1351  		BUG_ON(!gfs2_glock_is_locked_by_me(ip->i_gl));
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1352  		gfs2_holder_mark_uninitialized(&gh);
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1353  		goto out_delete;
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1354  	}
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1355  
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1356  	if (test_bit(GIF_DEFERRED_DELETE, &ip->i_flags))
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1357  		goto out;
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1358  
6a1c8f6dcf815d Andreas Gruenbacher 2017-08-01  1359  	/* Deletes should never happen under memory pressure anymore.  */
6a1c8f6dcf815d Andreas Gruenbacher 2017-08-01  1360  	if (WARN_ON_ONCE(current->flags & PF_MEMALLOC))
6a1c8f6dcf815d Andreas Gruenbacher 2017-08-01  1361  		goto out;
6a1c8f6dcf815d Andreas Gruenbacher 2017-08-01  1362  
44ad37d69b2cc4 Bob Peterson        2011-03-17  1363  	/* Must not read inode block until block type has been verified */
44ad37d69b2cc4 Bob Peterson        2011-03-17  1364  	error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, GL_SKIP, &gh);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1365  	if (unlikely(error)) {
240c6235dfe4fe Bob Peterson        2017-07-18  1366  		glock_clear_object(ip->i_iopen_gh.gh_gl, ip);
a6a4d98b0124b5 Bob Peterson        2013-05-29  1367  		ip->i_iopen_gh.gh_flags |= GL_NOCACHE;
d4da31986c5da1 Andreas Gruenbacher 2017-02-22  1368  		gfs2_glock_dq_uninit(&ip->i_iopen_gh);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1369  		goto out;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1370  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1371  
f286d627ef026a Andreas Gruenbacher 2020-01-13  1372  	if (gfs2_inode_already_deleted(ip->i_gl, ip->i_no_formal_ino))
4b98604ca5531f Bob Peterson        2020-08-12  1373  		goto out_flush;
acf7e2444acfaf Steven Whitehouse   2009-09-08  1374  	error = gfs2_check_blk_type(sdp, ip->i_no_addr, GFS2_BLKST_UNLINKED);
4b98604ca5531f Bob Peterson        2020-08-12  1375  	if (error) {
4b98604ca5531f Bob Peterson        2020-08-12  1376  		error = 0;
4b98604ca5531f Bob Peterson        2020-08-12  1377  		goto out_flush;
4b98604ca5531f Bob Peterson        2020-08-12  1378  	}
acf7e2444acfaf Steven Whitehouse   2009-09-08  1379  
44ad37d69b2cc4 Bob Peterson        2011-03-17  1380  	if (test_bit(GIF_INVALID, &ip->i_flags)) {
44ad37d69b2cc4 Bob Peterson        2011-03-17  1381  		error = gfs2_inode_refresh(ip);
4b98604ca5531f Bob Peterson        2020-08-12  1382  		if (error) {
4b98604ca5531f Bob Peterson        2020-08-12  1383  			error = 0;
4b98604ca5531f Bob Peterson        2020-08-12  1384  			goto out_flush;
4b98604ca5531f Bob Peterson        2020-08-12  1385  		}
44ad37d69b2cc4 Bob Peterson        2011-03-17  1386  	}
44ad37d69b2cc4 Bob Peterson        2011-03-17  1387  
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1388  	/*
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1389  	 * The inode may have been recreated in the meantime.
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1390  	 */
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1391  	if (inode->i_nlink)
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1392  		goto out_truncate;

This one is a lot more clearly a bug...

71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1393  
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1394  out_delete:
6df9f9a253c7dc Andreas Gruenbacher 2016-06-17  1395  	if (gfs2_holder_initialized(&ip->i_iopen_gh) &&
7508abc4bdac43 Bob Peterson        2015-12-18  1396  	    test_bit(HIF_HOLDER, &ip->i_iopen_gh.gh_iflags)) {
9e73330f298acf Andreas Gruenbacher 2020-01-14  1397  		if (!gfs2_upgrade_iopen_glock(inode)) {
9e73330f298acf Andreas Gruenbacher 2020-01-14  1398  			gfs2_holder_uninit(&ip->i_iopen_gh);
4b98604ca5531f Bob Peterson        2020-08-12  1399  			goto out_flush;
7508abc4bdac43 Bob Peterson        2015-12-18  1400  		}
9e73330f298acf Andreas Gruenbacher 2020-01-14  1401  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1402  
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1403  	if (S_ISDIR(inode->i_mode) &&
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1404  	    (ip->i_diskflags & GFS2_DIF_EXHASH)) {
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1405  		error = gfs2_dir_exhash_dealloc(ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1406  		if (error)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1407  			goto out_unlock;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1408  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1409  
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1410  	if (ip->i_eattr) {
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1411  		error = gfs2_ea_dealloc(ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1412  		if (error)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1413  			goto out_unlock;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1414  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1415  
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1416  	if (!gfs2_is_stuffed(ip)) {
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1417  		error = gfs2_file_dealloc(ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1418  		if (error)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1419  			goto out_unlock;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1420  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1421  
240c6235dfe4fe Bob Peterson        2017-07-18  1422  	/* We're about to clear the bitmap for the dinode, but as soon as we
240c6235dfe4fe Bob Peterson        2017-07-18  1423  	   do, gfs2_create_inode can create another inode at the same block
240c6235dfe4fe Bob Peterson        2017-07-18  1424  	   location and try to set gl_object again. We clear gl_object here so
240c6235dfe4fe Bob Peterson        2017-07-18  1425  	   that subsequent inode creates don't see an old gl_object. */
240c6235dfe4fe Bob Peterson        2017-07-18  1426  	glock_clear_object(ip->i_gl, ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1427  	error = gfs2_dinode_dealloc(ip);
f286d627ef026a Andreas Gruenbacher 2020-01-13  1428  	gfs2_inode_remember_delete(ip->i_gl, ip->i_no_formal_ino);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1429  	goto out_unlock;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1430  
4b98604ca5531f Bob Peterson        2020-08-12  1431  out_flush:
805c090750a315 Bob Peterson        2018-01-08  1432  	gfs2_log_flush(sdp, ip->i_gl, GFS2_LOG_HEAD_FLUSH_NORMAL |
805c090750a315 Bob Peterson        2018-01-08  1433  		       GFS2_LFC_EVICT_INODE);
ee530beafeca98 Bob Peterson        2015-12-07  1434  	metamapping = gfs2_glock2aspace(ip->i_gl);
2216db70c95a96 Benjamin Marzinski  2012-09-20  1435  	if (test_bit(GLF_DIRTY, &ip->i_gl->gl_flags)) {
2216db70c95a96 Benjamin Marzinski  2012-09-20  1436  		filemap_fdatawrite(metamapping);
2216db70c95a96 Benjamin Marzinski  2012-09-20  1437  		filemap_fdatawait(metamapping);
2216db70c95a96 Benjamin Marzinski  2012-09-20  1438  	}
40ac218f52aa5c Steven Whitehouse   2011-08-02  1439  	write_inode_now(inode, 1);
b5b24d7aeb9608 Steven Whitehouse   2011-09-07  1440  	gfs2_ail_flush(ip->i_gl, 0);
40ac218f52aa5c Steven Whitehouse   2011-08-02  1441  
4b98604ca5531f Bob Peterson        2020-08-12  1442  out_truncate:
e7450d984b481c Bob Peterson        2020-08-12 @1443  	nr_revokes = inode->i_mapping->nrpages + metamapping->nrpages;
                                                                                                 ^^^^^^^^^^^^^^^^^^^^
This will Oops.

e7450d984b481c Bob Peterson        2020-08-12  1444  	if (!nr_revokes)
e7450d984b481c Bob Peterson        2020-08-12  1445  		goto out_unlock;
e7450d984b481c Bob Peterson        2020-08-12  1446  
e7450d984b481c Bob Peterson        2020-08-12  1447  	error = gfs2_trans_begin(sdp, 0, nr_revokes);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1448  	if (error)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1449  		goto out_unlock;
380f7c65a7eb32 Steven Whitehouse   2011-07-14  1450  	/* Needs to be done before glock release & also in a transaction */
380f7c65a7eb32 Steven Whitehouse   2011-07-14  1451  	truncate_inode_pages(&inode->i_data, 0);
ee530beafeca98 Bob Peterson        2015-12-07  1452  	truncate_inode_pages(metamapping, 0);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1453  	gfs2_trans_end(sdp);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1454  
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1455  out_unlock:
a097dc7e24cba7 Bob Peterson        2015-07-16  1456  	if (gfs2_rs_active(&ip->i_res))
a097dc7e24cba7 Bob Peterson        2015-07-16  1457  		gfs2_rs_deltree(&ip->i_res);
8e2e00473598dd Bob Peterson        2012-07-19  1458  
240c6235dfe4fe Bob Peterson        2017-07-18  1459  	if (gfs2_holder_initialized(&gh)) {
240c6235dfe4fe Bob Peterson        2017-07-18  1460  		glock_clear_object(ip->i_gl, ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1461  		gfs2_glock_dq_uninit(&gh);
240c6235dfe4fe Bob Peterson        2017-07-18  1462  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1463  	if (error && error != GLR_TRYFAILED && error != -EROFS)
d5c1515cf37495 Al Viro             2010-06-07  1464  		fs_warn(sdp, "gfs2_evict_inode: %d\n", error);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1465  out:
91b0abe36a7b2b Johannes Weiner     2014-04-03  1466  	truncate_inode_pages_final(&inode->i_data);
2fba46a04c383f Bob Peterson        2020-02-27  1467  	if (ip->i_qadata)
2fba46a04c383f Bob Peterson        2020-02-27  1468  		gfs2_assert_warn(sdp, ip->i_qadata->qa_ref == 0);
1595548fe72ca8 Andreas Gruenbacher 2020-03-06  1469  	gfs2_rs_delete(ip, NULL);
4513899092b325 Steven Whitehouse   2013-01-28  1470  	gfs2_ordered_del_inode(ip);
dbd5768f87ff6f Jan Kara            2012-05-03  1471  	clear_inode(inode);
17d539f0499fa2 Steven Whitehouse   2011-06-15  1472  	gfs2_dir_hash_inval(ip);
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1473  	if (ip->i_gl) {
df3d87bde12121 Bob Peterson        2017-07-18  1474  		glock_clear_object(ip->i_gl, ip);
4fd1a5795214bc Andreas Gruenbacher 2017-06-30  1475  		wait_on_bit_io(&ip->i_flags, GIF_GLOP_PENDING, TASK_UNINTERRUPTIBLE);
29687a2ac8dfcd Steven Whitehouse   2011-03-30  1476  		gfs2_glock_add_to_lru(ip->i_gl);
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1477  		gfs2_glock_put_eventually(ip->i_gl);
d5c1515cf37495 Al Viro             2010-06-07  1478  		ip->i_gl = NULL;
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1479  	}
6df9f9a253c7dc Andreas Gruenbacher 2016-06-17  1480  	if (gfs2_holder_initialized(&ip->i_iopen_gh)) {
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1481  		struct gfs2_glock *gl = ip->i_iopen_gh.gh_gl;
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1482  
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1483  		glock_clear_object(gl, ip);
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1484  		if (test_bit(HIF_HOLDER, &ip->i_iopen_gh.gh_iflags)) {
a6a4d98b0124b5 Bob Peterson        2013-05-29  1485  			ip->i_iopen_gh.gh_flags |= GL_NOCACHE;
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1486  			gfs2_glock_dq(&ip->i_iopen_gh);
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1487  		}
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1488  		gfs2_glock_hold(gl);
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1489  		gfs2_holder_uninit(&ip->i_iopen_gh);
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1490  		gfs2_glock_put_eventually(gl);
d5c1515cf37495 Al Viro             2010-06-07  1491  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1492  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all at lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 38885 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/cluster-devel/attachments/20200824/c2038c57/attachment.gz>

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org
Subject: [gfs2:for-next.bob6m 6/11] fs/gfs2/super.c:1443 gfs2_evict_inode() error: potentially dereferencing uninitialized 'metamapping'.
Date: Mon, 24 Aug 2020 13:52:38 +0300	[thread overview]
Message-ID: <20200824105238.GD1793@kadam> (raw)

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git for-next.bob6m
head:   fd5ce905071cc34294900a21a773d9f8c72f5119
commit: 4b98604ca5531f8d662e07d4a10d5fe98c9d4eae [6/11] gfs2: Create transaction for inodes with i_nlink != 0
config: i386-randconfig-m021-20200820 (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>

New smatch warnings:
fs/gfs2/super.c:1443 gfs2_evict_inode() error: potentially dereferencing uninitialized 'metamapping'.

# https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git/commit/?id=4b98604ca5531f8d662e07d4a10d5fe98c9d4eae
git remote add gfs2 https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git
git fetch --no-tags gfs2 for-next.bob6m
git checkout 4b98604ca5531f8d662e07d4a10d5fe98c9d4eae
vim +/metamapping +1443 fs/gfs2/super.c

d5c1515cf37495 Al Viro             2010-06-07  1332  static void gfs2_evict_inode(struct inode *inode)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1333  {
001e8e8df4283d Steven Whitehouse   2011-03-30  1334  	struct super_block *sb = inode->i_sb;
001e8e8df4283d Steven Whitehouse   2011-03-30  1335  	struct gfs2_sbd *sdp = sb->s_fs_info;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1336  	struct gfs2_inode *ip = GFS2_I(inode);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1337  	struct gfs2_holder gh;
ee530beafeca98 Bob Peterson        2015-12-07  1338  	struct address_space *metamapping;
e7450d984b481c Bob Peterson        2020-08-12  1339  	int nr_revokes;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1340  	int error;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1341  
059788039f1e63 Abhi Das            2014-03-31  1342  	if (test_bit(GIF_FREE_VFS_INODE, &ip->i_flags)) {
059788039f1e63 Abhi Das            2014-03-31  1343  		clear_inode(inode);
059788039f1e63 Abhi Das            2014-03-31  1344  		return;
059788039f1e63 Abhi Das            2014-03-31  1345  	}
059788039f1e63 Abhi Das            2014-03-31  1346  
4b98604ca5531f Bob Peterson        2020-08-12  1347  	if (sb_rdonly(sb))
d5c1515cf37495 Al Viro             2010-06-07  1348  		goto out;
d5c1515cf37495 Al Viro             2010-06-07  1349  
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1350  	if (test_bit(GIF_ALLOC_FAILED, &ip->i_flags)) {
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1351  		BUG_ON(!gfs2_glock_is_locked_by_me(ip->i_gl));
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1352  		gfs2_holder_mark_uninitialized(&gh);
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1353  		goto out_delete;
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1354  	}
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1355  
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1356  	if (test_bit(GIF_DEFERRED_DELETE, &ip->i_flags))
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1357  		goto out;
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1358  
6a1c8f6dcf815d Andreas Gruenbacher 2017-08-01  1359  	/* Deletes should never happen under memory pressure anymore.  */
6a1c8f6dcf815d Andreas Gruenbacher 2017-08-01  1360  	if (WARN_ON_ONCE(current->flags & PF_MEMALLOC))
6a1c8f6dcf815d Andreas Gruenbacher 2017-08-01  1361  		goto out;
6a1c8f6dcf815d Andreas Gruenbacher 2017-08-01  1362  
44ad37d69b2cc4 Bob Peterson        2011-03-17  1363  	/* Must not read inode block until block type has been verified */
44ad37d69b2cc4 Bob Peterson        2011-03-17  1364  	error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, GL_SKIP, &gh);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1365  	if (unlikely(error)) {
240c6235dfe4fe Bob Peterson        2017-07-18  1366  		glock_clear_object(ip->i_iopen_gh.gh_gl, ip);
a6a4d98b0124b5 Bob Peterson        2013-05-29  1367  		ip->i_iopen_gh.gh_flags |= GL_NOCACHE;
d4da31986c5da1 Andreas Gruenbacher 2017-02-22  1368  		gfs2_glock_dq_uninit(&ip->i_iopen_gh);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1369  		goto out;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1370  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1371  
f286d627ef026a Andreas Gruenbacher 2020-01-13  1372  	if (gfs2_inode_already_deleted(ip->i_gl, ip->i_no_formal_ino))
4b98604ca5531f Bob Peterson        2020-08-12  1373  		goto out_flush;
acf7e2444acfaf Steven Whitehouse   2009-09-08  1374  	error = gfs2_check_blk_type(sdp, ip->i_no_addr, GFS2_BLKST_UNLINKED);
4b98604ca5531f Bob Peterson        2020-08-12  1375  	if (error) {
4b98604ca5531f Bob Peterson        2020-08-12  1376  		error = 0;
4b98604ca5531f Bob Peterson        2020-08-12  1377  		goto out_flush;
4b98604ca5531f Bob Peterson        2020-08-12  1378  	}
acf7e2444acfaf Steven Whitehouse   2009-09-08  1379  
44ad37d69b2cc4 Bob Peterson        2011-03-17  1380  	if (test_bit(GIF_INVALID, &ip->i_flags)) {
44ad37d69b2cc4 Bob Peterson        2011-03-17  1381  		error = gfs2_inode_refresh(ip);
4b98604ca5531f Bob Peterson        2020-08-12  1382  		if (error) {
4b98604ca5531f Bob Peterson        2020-08-12  1383  			error = 0;
4b98604ca5531f Bob Peterson        2020-08-12  1384  			goto out_flush;
4b98604ca5531f Bob Peterson        2020-08-12  1385  		}
44ad37d69b2cc4 Bob Peterson        2011-03-17  1386  	}
44ad37d69b2cc4 Bob Peterson        2011-03-17  1387  
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1388  	/*
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1389  	 * The inode may have been recreated in the meantime.
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1390  	 */
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1391  	if (inode->i_nlink)
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1392  		goto out_truncate;

This one is a lot more clearly a bug...

71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1393  
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1394  out_delete:
6df9f9a253c7dc Andreas Gruenbacher 2016-06-17  1395  	if (gfs2_holder_initialized(&ip->i_iopen_gh) &&
7508abc4bdac43 Bob Peterson        2015-12-18  1396  	    test_bit(HIF_HOLDER, &ip->i_iopen_gh.gh_iflags)) {
9e73330f298acf Andreas Gruenbacher 2020-01-14  1397  		if (!gfs2_upgrade_iopen_glock(inode)) {
9e73330f298acf Andreas Gruenbacher 2020-01-14  1398  			gfs2_holder_uninit(&ip->i_iopen_gh);
4b98604ca5531f Bob Peterson        2020-08-12  1399  			goto out_flush;
7508abc4bdac43 Bob Peterson        2015-12-18  1400  		}
9e73330f298acf Andreas Gruenbacher 2020-01-14  1401  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1402  
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1403  	if (S_ISDIR(inode->i_mode) &&
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1404  	    (ip->i_diskflags & GFS2_DIF_EXHASH)) {
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1405  		error = gfs2_dir_exhash_dealloc(ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1406  		if (error)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1407  			goto out_unlock;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1408  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1409  
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1410  	if (ip->i_eattr) {
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1411  		error = gfs2_ea_dealloc(ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1412  		if (error)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1413  			goto out_unlock;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1414  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1415  
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1416  	if (!gfs2_is_stuffed(ip)) {
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1417  		error = gfs2_file_dealloc(ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1418  		if (error)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1419  			goto out_unlock;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1420  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1421  
240c6235dfe4fe Bob Peterson        2017-07-18  1422  	/* We're about to clear the bitmap for the dinode, but as soon as we
240c6235dfe4fe Bob Peterson        2017-07-18  1423  	   do, gfs2_create_inode can create another inode at the same block
240c6235dfe4fe Bob Peterson        2017-07-18  1424  	   location and try to set gl_object again. We clear gl_object here so
240c6235dfe4fe Bob Peterson        2017-07-18  1425  	   that subsequent inode creates don't see an old gl_object. */
240c6235dfe4fe Bob Peterson        2017-07-18  1426  	glock_clear_object(ip->i_gl, ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1427  	error = gfs2_dinode_dealloc(ip);
f286d627ef026a Andreas Gruenbacher 2020-01-13  1428  	gfs2_inode_remember_delete(ip->i_gl, ip->i_no_formal_ino);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1429  	goto out_unlock;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1430  
4b98604ca5531f Bob Peterson        2020-08-12  1431  out_flush:
805c090750a315 Bob Peterson        2018-01-08  1432  	gfs2_log_flush(sdp, ip->i_gl, GFS2_LOG_HEAD_FLUSH_NORMAL |
805c090750a315 Bob Peterson        2018-01-08  1433  		       GFS2_LFC_EVICT_INODE);
ee530beafeca98 Bob Peterson        2015-12-07  1434  	metamapping = gfs2_glock2aspace(ip->i_gl);
2216db70c95a96 Benjamin Marzinski  2012-09-20  1435  	if (test_bit(GLF_DIRTY, &ip->i_gl->gl_flags)) {
2216db70c95a96 Benjamin Marzinski  2012-09-20  1436  		filemap_fdatawrite(metamapping);
2216db70c95a96 Benjamin Marzinski  2012-09-20  1437  		filemap_fdatawait(metamapping);
2216db70c95a96 Benjamin Marzinski  2012-09-20  1438  	}
40ac218f52aa5c Steven Whitehouse   2011-08-02  1439  	write_inode_now(inode, 1);
b5b24d7aeb9608 Steven Whitehouse   2011-09-07  1440  	gfs2_ail_flush(ip->i_gl, 0);
40ac218f52aa5c Steven Whitehouse   2011-08-02  1441  
4b98604ca5531f Bob Peterson        2020-08-12  1442  out_truncate:
e7450d984b481c Bob Peterson        2020-08-12 @1443  	nr_revokes = inode->i_mapping->nrpages + metamapping->nrpages;
                                                                                                 ^^^^^^^^^^^^^^^^^^^^
This will Oops.

e7450d984b481c Bob Peterson        2020-08-12  1444  	if (!nr_revokes)
e7450d984b481c Bob Peterson        2020-08-12  1445  		goto out_unlock;
e7450d984b481c Bob Peterson        2020-08-12  1446  
e7450d984b481c Bob Peterson        2020-08-12  1447  	error = gfs2_trans_begin(sdp, 0, nr_revokes);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1448  	if (error)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1449  		goto out_unlock;
380f7c65a7eb32 Steven Whitehouse   2011-07-14  1450  	/* Needs to be done before glock release & also in a transaction */
380f7c65a7eb32 Steven Whitehouse   2011-07-14  1451  	truncate_inode_pages(&inode->i_data, 0);
ee530beafeca98 Bob Peterson        2015-12-07  1452  	truncate_inode_pages(metamapping, 0);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1453  	gfs2_trans_end(sdp);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1454  
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1455  out_unlock:
a097dc7e24cba7 Bob Peterson        2015-07-16  1456  	if (gfs2_rs_active(&ip->i_res))
a097dc7e24cba7 Bob Peterson        2015-07-16  1457  		gfs2_rs_deltree(&ip->i_res);
8e2e00473598dd Bob Peterson        2012-07-19  1458  
240c6235dfe4fe Bob Peterson        2017-07-18  1459  	if (gfs2_holder_initialized(&gh)) {
240c6235dfe4fe Bob Peterson        2017-07-18  1460  		glock_clear_object(ip->i_gl, ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1461  		gfs2_glock_dq_uninit(&gh);
240c6235dfe4fe Bob Peterson        2017-07-18  1462  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1463  	if (error && error != GLR_TRYFAILED && error != -EROFS)
d5c1515cf37495 Al Viro             2010-06-07  1464  		fs_warn(sdp, "gfs2_evict_inode: %d\n", error);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1465  out:
91b0abe36a7b2b Johannes Weiner     2014-04-03  1466  	truncate_inode_pages_final(&inode->i_data);
2fba46a04c383f Bob Peterson        2020-02-27  1467  	if (ip->i_qadata)
2fba46a04c383f Bob Peterson        2020-02-27  1468  		gfs2_assert_warn(sdp, ip->i_qadata->qa_ref == 0);
1595548fe72ca8 Andreas Gruenbacher 2020-03-06  1469  	gfs2_rs_delete(ip, NULL);
4513899092b325 Steven Whitehouse   2013-01-28  1470  	gfs2_ordered_del_inode(ip);
dbd5768f87ff6f Jan Kara            2012-05-03  1471  	clear_inode(inode);
17d539f0499fa2 Steven Whitehouse   2011-06-15  1472  	gfs2_dir_hash_inval(ip);
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1473  	if (ip->i_gl) {
df3d87bde12121 Bob Peterson        2017-07-18  1474  		glock_clear_object(ip->i_gl, ip);
4fd1a5795214bc Andreas Gruenbacher 2017-06-30  1475  		wait_on_bit_io(&ip->i_flags, GIF_GLOP_PENDING, TASK_UNINTERRUPTIBLE);
29687a2ac8dfcd Steven Whitehouse   2011-03-30  1476  		gfs2_glock_add_to_lru(ip->i_gl);
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1477  		gfs2_glock_put_eventually(ip->i_gl);
d5c1515cf37495 Al Viro             2010-06-07  1478  		ip->i_gl = NULL;
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1479  	}
6df9f9a253c7dc Andreas Gruenbacher 2016-06-17  1480  	if (gfs2_holder_initialized(&ip->i_iopen_gh)) {
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1481  		struct gfs2_glock *gl = ip->i_iopen_gh.gh_gl;
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1482  
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1483  		glock_clear_object(gl, ip);
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1484  		if (test_bit(HIF_HOLDER, &ip->i_iopen_gh.gh_iflags)) {
a6a4d98b0124b5 Bob Peterson        2013-05-29  1485  			ip->i_iopen_gh.gh_flags |= GL_NOCACHE;
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1486  			gfs2_glock_dq(&ip->i_iopen_gh);
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1487  		}
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1488  		gfs2_glock_hold(gl);
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1489  		gfs2_holder_uninit(&ip->i_iopen_gh);
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1490  		gfs2_glock_put_eventually(gl);
d5c1515cf37495 Al Viro             2010-06-07  1491  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1492  }

---
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: 38885 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: [gfs2:for-next.bob6m 6/11] fs/gfs2/super.c:1443 gfs2_evict_inode() error: potentially dereferencing uninitialized 'metamapping'.
Date: Mon, 24 Aug 2020 13:52:38 +0300	[thread overview]
Message-ID: <20200824105238.GD1793@kadam> (raw)

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git for-next.bob6m
head:   fd5ce905071cc34294900a21a773d9f8c72f5119
commit: 4b98604ca5531f8d662e07d4a10d5fe98c9d4eae [6/11] gfs2: Create transaction for inodes with i_nlink != 0
config: i386-randconfig-m021-20200820 (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>

New smatch warnings:
fs/gfs2/super.c:1443 gfs2_evict_inode() error: potentially dereferencing uninitialized 'metamapping'.

# https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git/commit/?id=4b98604ca5531f8d662e07d4a10d5fe98c9d4eae
git remote add gfs2 https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git
git fetch --no-tags gfs2 for-next.bob6m
git checkout 4b98604ca5531f8d662e07d4a10d5fe98c9d4eae
vim +/metamapping +1443 fs/gfs2/super.c

d5c1515cf37495 Al Viro             2010-06-07  1332  static void gfs2_evict_inode(struct inode *inode)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1333  {
001e8e8df4283d Steven Whitehouse   2011-03-30  1334  	struct super_block *sb = inode->i_sb;
001e8e8df4283d Steven Whitehouse   2011-03-30  1335  	struct gfs2_sbd *sdp = sb->s_fs_info;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1336  	struct gfs2_inode *ip = GFS2_I(inode);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1337  	struct gfs2_holder gh;
ee530beafeca98 Bob Peterson        2015-12-07  1338  	struct address_space *metamapping;
e7450d984b481c Bob Peterson        2020-08-12  1339  	int nr_revokes;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1340  	int error;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1341  
059788039f1e63 Abhi Das            2014-03-31  1342  	if (test_bit(GIF_FREE_VFS_INODE, &ip->i_flags)) {
059788039f1e63 Abhi Das            2014-03-31  1343  		clear_inode(inode);
059788039f1e63 Abhi Das            2014-03-31  1344  		return;
059788039f1e63 Abhi Das            2014-03-31  1345  	}
059788039f1e63 Abhi Das            2014-03-31  1346  
4b98604ca5531f Bob Peterson        2020-08-12  1347  	if (sb_rdonly(sb))
d5c1515cf37495 Al Viro             2010-06-07  1348  		goto out;
d5c1515cf37495 Al Viro             2010-06-07  1349  
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1350  	if (test_bit(GIF_ALLOC_FAILED, &ip->i_flags)) {
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1351  		BUG_ON(!gfs2_glock_is_locked_by_me(ip->i_gl));
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1352  		gfs2_holder_mark_uninitialized(&gh);
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1353  		goto out_delete;
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1354  	}
e0b62e21b71bbe Andreas Gruenbacher 2017-06-30  1355  
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1356  	if (test_bit(GIF_DEFERRED_DELETE, &ip->i_flags))
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1357  		goto out;
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1358  
6a1c8f6dcf815d Andreas Gruenbacher 2017-08-01  1359  	/* Deletes should never happen under memory pressure anymore.  */
6a1c8f6dcf815d Andreas Gruenbacher 2017-08-01  1360  	if (WARN_ON_ONCE(current->flags & PF_MEMALLOC))
6a1c8f6dcf815d Andreas Gruenbacher 2017-08-01  1361  		goto out;
6a1c8f6dcf815d Andreas Gruenbacher 2017-08-01  1362  
44ad37d69b2cc4 Bob Peterson        2011-03-17  1363  	/* Must not read inode block until block type has been verified */
44ad37d69b2cc4 Bob Peterson        2011-03-17  1364  	error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, GL_SKIP, &gh);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1365  	if (unlikely(error)) {
240c6235dfe4fe Bob Peterson        2017-07-18  1366  		glock_clear_object(ip->i_iopen_gh.gh_gl, ip);
a6a4d98b0124b5 Bob Peterson        2013-05-29  1367  		ip->i_iopen_gh.gh_flags |= GL_NOCACHE;
d4da31986c5da1 Andreas Gruenbacher 2017-02-22  1368  		gfs2_glock_dq_uninit(&ip->i_iopen_gh);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1369  		goto out;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1370  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1371  
f286d627ef026a Andreas Gruenbacher 2020-01-13  1372  	if (gfs2_inode_already_deleted(ip->i_gl, ip->i_no_formal_ino))
4b98604ca5531f Bob Peterson        2020-08-12  1373  		goto out_flush;
acf7e2444acfaf Steven Whitehouse   2009-09-08  1374  	error = gfs2_check_blk_type(sdp, ip->i_no_addr, GFS2_BLKST_UNLINKED);
4b98604ca5531f Bob Peterson        2020-08-12  1375  	if (error) {
4b98604ca5531f Bob Peterson        2020-08-12  1376  		error = 0;
4b98604ca5531f Bob Peterson        2020-08-12  1377  		goto out_flush;
4b98604ca5531f Bob Peterson        2020-08-12  1378  	}
acf7e2444acfaf Steven Whitehouse   2009-09-08  1379  
44ad37d69b2cc4 Bob Peterson        2011-03-17  1380  	if (test_bit(GIF_INVALID, &ip->i_flags)) {
44ad37d69b2cc4 Bob Peterson        2011-03-17  1381  		error = gfs2_inode_refresh(ip);
4b98604ca5531f Bob Peterson        2020-08-12  1382  		if (error) {
4b98604ca5531f Bob Peterson        2020-08-12  1383  			error = 0;
4b98604ca5531f Bob Peterson        2020-08-12  1384  			goto out_flush;
4b98604ca5531f Bob Peterson        2020-08-12  1385  		}
44ad37d69b2cc4 Bob Peterson        2011-03-17  1386  	}
44ad37d69b2cc4 Bob Peterson        2011-03-17  1387  
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1388  	/*
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1389  	 * The inode may have been recreated in the meantime.
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1390  	 */
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1391  	if (inode->i_nlink)
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1392  		goto out_truncate;

This one is a lot more clearly a bug...

71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1393  
8c7b9262a86076 Andreas Gruenbacher 2020-01-13  1394  out_delete:
6df9f9a253c7dc Andreas Gruenbacher 2016-06-17  1395  	if (gfs2_holder_initialized(&ip->i_iopen_gh) &&
7508abc4bdac43 Bob Peterson        2015-12-18  1396  	    test_bit(HIF_HOLDER, &ip->i_iopen_gh.gh_iflags)) {
9e73330f298acf Andreas Gruenbacher 2020-01-14  1397  		if (!gfs2_upgrade_iopen_glock(inode)) {
9e73330f298acf Andreas Gruenbacher 2020-01-14  1398  			gfs2_holder_uninit(&ip->i_iopen_gh);
4b98604ca5531f Bob Peterson        2020-08-12  1399  			goto out_flush;
7508abc4bdac43 Bob Peterson        2015-12-18  1400  		}
9e73330f298acf Andreas Gruenbacher 2020-01-14  1401  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1402  
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1403  	if (S_ISDIR(inode->i_mode) &&
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1404  	    (ip->i_diskflags & GFS2_DIF_EXHASH)) {
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1405  		error = gfs2_dir_exhash_dealloc(ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1406  		if (error)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1407  			goto out_unlock;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1408  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1409  
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1410  	if (ip->i_eattr) {
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1411  		error = gfs2_ea_dealloc(ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1412  		if (error)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1413  			goto out_unlock;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1414  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1415  
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1416  	if (!gfs2_is_stuffed(ip)) {
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1417  		error = gfs2_file_dealloc(ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1418  		if (error)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1419  			goto out_unlock;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1420  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1421  
240c6235dfe4fe Bob Peterson        2017-07-18  1422  	/* We're about to clear the bitmap for the dinode, but as soon as we
240c6235dfe4fe Bob Peterson        2017-07-18  1423  	   do, gfs2_create_inode can create another inode at the same block
240c6235dfe4fe Bob Peterson        2017-07-18  1424  	   location and try to set gl_object again. We clear gl_object here so
240c6235dfe4fe Bob Peterson        2017-07-18  1425  	   that subsequent inode creates don't see an old gl_object. */
240c6235dfe4fe Bob Peterson        2017-07-18  1426  	glock_clear_object(ip->i_gl, ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1427  	error = gfs2_dinode_dealloc(ip);
f286d627ef026a Andreas Gruenbacher 2020-01-13  1428  	gfs2_inode_remember_delete(ip->i_gl, ip->i_no_formal_ino);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1429  	goto out_unlock;
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1430  
4b98604ca5531f Bob Peterson        2020-08-12  1431  out_flush:
805c090750a315 Bob Peterson        2018-01-08  1432  	gfs2_log_flush(sdp, ip->i_gl, GFS2_LOG_HEAD_FLUSH_NORMAL |
805c090750a315 Bob Peterson        2018-01-08  1433  		       GFS2_LFC_EVICT_INODE);
ee530beafeca98 Bob Peterson        2015-12-07  1434  	metamapping = gfs2_glock2aspace(ip->i_gl);
2216db70c95a96 Benjamin Marzinski  2012-09-20  1435  	if (test_bit(GLF_DIRTY, &ip->i_gl->gl_flags)) {
2216db70c95a96 Benjamin Marzinski  2012-09-20  1436  		filemap_fdatawrite(metamapping);
2216db70c95a96 Benjamin Marzinski  2012-09-20  1437  		filemap_fdatawait(metamapping);
2216db70c95a96 Benjamin Marzinski  2012-09-20  1438  	}
40ac218f52aa5c Steven Whitehouse   2011-08-02  1439  	write_inode_now(inode, 1);
b5b24d7aeb9608 Steven Whitehouse   2011-09-07  1440  	gfs2_ail_flush(ip->i_gl, 0);
40ac218f52aa5c Steven Whitehouse   2011-08-02  1441  
4b98604ca5531f Bob Peterson        2020-08-12  1442  out_truncate:
e7450d984b481c Bob Peterson        2020-08-12 @1443  	nr_revokes = inode->i_mapping->nrpages + metamapping->nrpages;
                                                                                                 ^^^^^^^^^^^^^^^^^^^^
This will Oops.

e7450d984b481c Bob Peterson        2020-08-12  1444  	if (!nr_revokes)
e7450d984b481c Bob Peterson        2020-08-12  1445  		goto out_unlock;
e7450d984b481c Bob Peterson        2020-08-12  1446  
e7450d984b481c Bob Peterson        2020-08-12  1447  	error = gfs2_trans_begin(sdp, 0, nr_revokes);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1448  	if (error)
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1449  		goto out_unlock;
380f7c65a7eb32 Steven Whitehouse   2011-07-14  1450  	/* Needs to be done before glock release & also in a transaction */
380f7c65a7eb32 Steven Whitehouse   2011-07-14  1451  	truncate_inode_pages(&inode->i_data, 0);
ee530beafeca98 Bob Peterson        2015-12-07  1452  	truncate_inode_pages(metamapping, 0);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1453  	gfs2_trans_end(sdp);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1454  
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1455  out_unlock:
a097dc7e24cba7 Bob Peterson        2015-07-16  1456  	if (gfs2_rs_active(&ip->i_res))
a097dc7e24cba7 Bob Peterson        2015-07-16  1457  		gfs2_rs_deltree(&ip->i_res);
8e2e00473598dd Bob Peterson        2012-07-19  1458  
240c6235dfe4fe Bob Peterson        2017-07-18  1459  	if (gfs2_holder_initialized(&gh)) {
240c6235dfe4fe Bob Peterson        2017-07-18  1460  		glock_clear_object(ip->i_gl, ip);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1461  		gfs2_glock_dq_uninit(&gh);
240c6235dfe4fe Bob Peterson        2017-07-18  1462  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1463  	if (error && error != GLR_TRYFAILED && error != -EROFS)
d5c1515cf37495 Al Viro             2010-06-07  1464  		fs_warn(sdp, "gfs2_evict_inode: %d\n", error);
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1465  out:
91b0abe36a7b2b Johannes Weiner     2014-04-03  1466  	truncate_inode_pages_final(&inode->i_data);
2fba46a04c383f Bob Peterson        2020-02-27  1467  	if (ip->i_qadata)
2fba46a04c383f Bob Peterson        2020-02-27  1468  		gfs2_assert_warn(sdp, ip->i_qadata->qa_ref == 0);
1595548fe72ca8 Andreas Gruenbacher 2020-03-06  1469  	gfs2_rs_delete(ip, NULL);
4513899092b325 Steven Whitehouse   2013-01-28  1470  	gfs2_ordered_del_inode(ip);
dbd5768f87ff6f Jan Kara            2012-05-03  1471  	clear_inode(inode);
17d539f0499fa2 Steven Whitehouse   2011-06-15  1472  	gfs2_dir_hash_inval(ip);
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1473  	if (ip->i_gl) {
df3d87bde12121 Bob Peterson        2017-07-18  1474  		glock_clear_object(ip->i_gl, ip);
4fd1a5795214bc Andreas Gruenbacher 2017-06-30  1475  		wait_on_bit_io(&ip->i_flags, GIF_GLOP_PENDING, TASK_UNINTERRUPTIBLE);
29687a2ac8dfcd Steven Whitehouse   2011-03-30  1476  		gfs2_glock_add_to_lru(ip->i_gl);
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1477  		gfs2_glock_put_eventually(ip->i_gl);
d5c1515cf37495 Al Viro             2010-06-07  1478  		ip->i_gl = NULL;
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1479  	}
6df9f9a253c7dc Andreas Gruenbacher 2016-06-17  1480  	if (gfs2_holder_initialized(&ip->i_iopen_gh)) {
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1481  		struct gfs2_glock *gl = ip->i_iopen_gh.gh_gl;
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1482  
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1483  		glock_clear_object(gl, ip);
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1484  		if (test_bit(HIF_HOLDER, &ip->i_iopen_gh.gh_iflags)) {
a6a4d98b0124b5 Bob Peterson        2013-05-29  1485  			ip->i_iopen_gh.gh_flags |= GL_NOCACHE;
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1486  			gfs2_glock_dq(&ip->i_iopen_gh);
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1487  		}
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1488  		gfs2_glock_hold(gl);
40e7e86ef16550 Andreas Gruenbacher 2020-01-24  1489  		gfs2_holder_uninit(&ip->i_iopen_gh);
71c1b2136835c8 Andreas Gruenbacher 2017-08-01  1490  		gfs2_glock_put_eventually(gl);
d5c1515cf37495 Al Viro             2010-06-07  1491  	}
9e6e0a128bca0a Steven Whitehouse   2009-05-22  1492  }

---
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: 38885 bytes --]

             reply	other threads:[~2020-08-24 10:52 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-24 10:52 Dan Carpenter [this message]
2020-08-24 10:52 ` [gfs2:for-next.bob6m 6/11] fs/gfs2/super.c:1443 gfs2_evict_inode() error: potentially dereferencing uninitialized 'metamapping' Dan Carpenter
2020-08-24 10:52 ` Dan Carpenter
2020-08-24 15:42 ` [Cluster-devel] " Bob Peterson
2020-08-24 15:42   ` Bob Peterson

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=20200824105238.GD1793@kadam \
    --to=dan.carpenter@oracle.com \
    /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.