tree:
https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git
reserve-rt-metadata-space
head: 51f17deded84ae5863d2220a0a7c152ef4a8bbb2
commit: 02ccf9a104716ff589dad55fcaf22d97d165e1e7 [129/196] xfs: move orphan files to the
orphanage
config: i386-randconfig-m021-20210115 (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(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
smatch warnings:
fs/xfs/scrub/repair.c:1788 xrep_setup_orphanage() error: uninitialized symbol
'error'.
vim +/error +1788 fs/xfs/scrub/repair.c
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1715 int
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1716 xrep_setup_orphanage(
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1717 struct xfs_scrub *sc)
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1718 {
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1719 struct xfs_mount *mp = sc->mp;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1720 struct dentry *root_dentry,
*orphanage_dentry;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1721 struct inode *root_inode =
VFS_I(sc->mp->m_rootip);
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1722 struct inode *orphanage_inode;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1723 int error;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1724
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1725 if (XFS_FORCED_SHUTDOWN(mp))
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1726 return -EIO;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1727
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1728 ASSERT(sc->tp == NULL);
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1729 ASSERT(sc->orphanage == NULL);
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1730
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1731 /* Find the dentry for the root
directory... */
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1732 root_dentry =
d_find_alias(root_inode);
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1733 if (!root_dentry) {
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1734 error = -EFSCORRUPTED;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1735 goto out;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1736 }
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1737
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1738 /* ...which is a directory, right? */
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1739 if (!d_is_dir(root_dentry)) {
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1740 error = -EFSCORRUPTED;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1741 goto out_dput_root;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1742 }
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1743
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1744 /* Try to find the orphanage
directory. */
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1745 inode_lock_nested(root_inode,
I_MUTEX_PARENT);
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1746 orphanage_dentry =
lookup_one_len(ORPHANAGE, root_dentry,
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1747 strlen(ORPHANAGE));
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1748 if (IS_ERR(orphanage_dentry)) {
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1749 error = PTR_ERR(orphanage_dentry);
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1750 goto out_unlock_root;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1751 }
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1752
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1753 /* Nothing found? Call mkdir to
create the orphanage. */
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1754 if
(d_really_is_negative(orphanage_dentry)) {
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1755 error = vfs_mkdir(root_inode,
orphanage_dentry, 0755);
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1756 if (error)
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1757 goto out_dput_orphanage;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1758 }
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1759
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1760 /* Not a directory? Bail out. */
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1761 if (!d_is_dir(orphanage_dentry)) {
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1762 error = -ENOTDIR;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1763 goto out_dput_orphanage;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1764 }
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1765
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1766 /*
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1767 * Grab a reference to the orphanage.
This /should/ succeed since
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1768 * we hold the root directory locked
and therefore nobody can delete
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1769 * the orphanage.
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1770 */
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1771 orphanage_inode =
igrab(d_inode(orphanage_dentry));
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1772 if (!orphanage_inode) {
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1773 error = -ENOENT;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1774 goto out_dput_orphanage;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1775 }
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1776
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1777 /* Stash the reference for later and
bail out. */
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1778 sc->orphanage =
XFS_I(orphanage_inode);
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1779 sc->orphanage_ilock_flags = 0;
error not initialized on the success path.
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1780
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1781 out_dput_orphanage:
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1782 dput(orphanage_dentry);
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1783 out_unlock_root:
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1784
inode_unlock(VFS_I(sc->mp->m_rootip));
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1785 out_dput_root:
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1786 dput(root_dentry);
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1787 out:
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 @1788 return error;
02ccf9a104716ff5 Darrick J. Wong 2021-01-05 1789 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org