* [linux-next:master 9257/9570] fs/gfs2/super.c:1543:17: sparse: sparse: incompatible types in comparison expression (different address spaces):
@ 2023-10-04 14:22 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-10-04 14:22 UTC (permalink / raw)
To: Al Viro; +Cc: oe-kbuild-all, Linux Memory Management List, Andreas Gruenbacher
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 33b64befb1a28bca3f5a9ed9807d2f87e976c63a
commit: 0abd1557e21c617bd13fc18f7725fc6363c05913 [9257/9570] gfs2: fix an oops in gfs2_permission
config: i386-randconfig-061-20231004 (https://download.01.org/0day-ci/archive/20231004/202310042215.w9PG3Rqs-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231004/202310042215.w9PG3Rqs-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310042215.w9PG3Rqs-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
fs/gfs2/super.c:1569:13: sparse: sparse: function 'free_local_statfs_inodes' with external linkage has definition
fs/gfs2/super.c:1584:21: sparse: sparse: function 'find_local_statfs_inode' with external linkage has definition
>> fs/gfs2/super.c:1543:17: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> fs/gfs2/super.c:1543:17: sparse: struct gfs2_glock [noderef] __rcu *
>> fs/gfs2/super.c:1543:17: sparse: struct gfs2_glock *
--
>> fs/gfs2/inode.c:1876:14: sparse: sparse: incompatible types in comparison expression (different address spaces):
>> fs/gfs2/inode.c:1876:14: sparse: struct gfs2_glock [noderef] __rcu *
>> fs/gfs2/inode.c:1876:14: sparse: struct gfs2_glock *
vim +1543 fs/gfs2/super.c
1464
1465 /**
1466 * gfs2_evict_inode - Remove an inode from cache
1467 * @inode: The inode to evict
1468 *
1469 * There are three cases to consider:
1470 * 1. i_nlink == 0, we are final opener (and must deallocate)
1471 * 2. i_nlink == 0, we are not the final opener (and cannot deallocate)
1472 * 3. i_nlink > 0
1473 *
1474 * If the fs is read only, then we have to treat all cases as per #3
1475 * since we are unable to do any deallocation. The inode will be
1476 * deallocated by the next read/write node to attempt an allocation
1477 * in the same resource group
1478 *
1479 * We have to (at the moment) hold the inodes main lock to cover
1480 * the gap between unlocking the shared lock on the iopen lock and
1481 * taking the exclusive lock. I'd rather do a shared -> exclusive
1482 * conversion on the iopen lock, but we can change that later. This
1483 * is safe, just less efficient.
1484 */
1485
1486 static void gfs2_evict_inode(struct inode *inode)
1487 {
1488 struct super_block *sb = inode->i_sb;
1489 struct gfs2_sbd *sdp = sb->s_fs_info;
1490 struct gfs2_inode *ip = GFS2_I(inode);
1491 struct gfs2_holder gh;
1492 int ret;
1493
1494 if (inode->i_nlink || sb_rdonly(sb) || !ip->i_no_addr)
1495 goto out;
1496
1497 /*
1498 * In case of an incomplete mount, gfs2_evict_inode() may be called for
1499 * system files without having an active journal to write to. In that
1500 * case, skip the filesystem evict.
1501 */
1502 if (!sdp->sd_jdesc)
1503 goto out;
1504
1505 gfs2_holder_mark_uninitialized(&gh);
1506 ret = evict_should_delete(inode, &gh);
1507 if (ret == SHOULD_DEFER_EVICTION)
1508 goto out;
1509 if (ret == SHOULD_DELETE_DINODE)
1510 ret = evict_unlinked_inode(inode);
1511 else
1512 ret = evict_linked_inode(inode);
1513
1514 if (gfs2_rs_active(&ip->i_res))
1515 gfs2_rs_deltree(&ip->i_res);
1516
1517 if (gfs2_holder_initialized(&gh))
1518 gfs2_glock_dq_uninit(&gh);
1519 if (ret && ret != GLR_TRYFAILED && ret != -EROFS)
1520 fs_warn(sdp, "gfs2_evict_inode: %d\n", ret);
1521 out:
1522 truncate_inode_pages_final(&inode->i_data);
1523 if (ip->i_qadata)
1524 gfs2_assert_warn(sdp, ip->i_qadata->qa_ref == 0);
1525 gfs2_rs_deltree(&ip->i_res);
1526 gfs2_ordered_del_inode(ip);
1527 clear_inode(inode);
1528 gfs2_dir_hash_inval(ip);
1529 if (gfs2_holder_initialized(&ip->i_iopen_gh)) {
1530 struct gfs2_glock *gl = ip->i_iopen_gh.gh_gl;
1531
1532 glock_clear_object(gl, ip);
1533 gfs2_glock_hold(gl);
1534 ip->i_iopen_gh.gh_flags |= GL_NOCACHE;
1535 gfs2_glock_dq_uninit(&ip->i_iopen_gh);
1536 gfs2_glock_put_eventually(gl);
1537 }
1538 if (ip->i_gl) {
1539 glock_clear_object(ip->i_gl, ip);
1540 wait_on_bit_io(&ip->i_flags, GIF_GLOP_PENDING, TASK_UNINTERRUPTIBLE);
1541 gfs2_glock_add_to_lru(ip->i_gl);
1542 gfs2_glock_put_eventually(ip->i_gl);
> 1543 rcu_assign_pointer(ip->i_gl, NULL);
1544 }
1545 }
1546
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-10-04 14:23 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-04 14:22 [linux-next:master 9257/9570] fs/gfs2/super.c:1543:17: sparse: sparse: incompatible types in comparison expression (different address spaces): kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox