Commit e57e083b authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

xfs: don't crash on corrupt /quotas dirent



If the /quotas dirent points to an inode but the inode isn't loadable
(and hence mkdir returns -EEXIST), don't crash, just bail out.

Cc: <stable@vger.kernel.org> # v6.13-rc1
Fixes: e80fbe1a ("xfs: use metadir for quota inodes")
Signed-off-by: default avatar"Darrick J. Wong" <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent 3853b5e1
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -731,6 +731,13 @@ xfs_qm_create_metadir_qinos(
		error = xfs_dqinode_mkdir_parent(mp, &qi->qi_dirip);
		if (error && error != -EEXIST)
			return error;
		/*
		 * If the /quotas dirent points to an inode that isn't
		 * loadable, qi_dirip will be NULL but mkdir_parent will return
		 * -EEXIST.  In this case the metadir is corrupt, so bail out.
		 */
		if (XFS_IS_CORRUPT(mp, qi->qi_dirip == NULL))
			return -EFSCORRUPTED;
	}

	if (XFS_IS_UQUOTA_ON(mp) && !qi->qi_uquotaip) {