Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ee4eec47 authored by Dave Chinner's avatar Dave Chinner Committed by Dave Chinner
Browse files

xfs: list_lru_init returns a negative error



And we don't invert it properly when initialising the dquot lru
list.

Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarJie Liu <jeff.liu@oracle.com>
Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
parent bc147822
Loading
Loading
Loading
Loading
+14 −12
Original line number Diff line number Diff line
@@ -843,22 +843,17 @@ xfs_qm_init_quotainfo(

	qinf = mp->m_quotainfo = kmem_zalloc(sizeof(xfs_quotainfo_t), KM_SLEEP);

	if ((error = list_lru_init(&qinf->qi_lru))) {
		kmem_free(qinf);
		mp->m_quotainfo = NULL;
		return error;
	}
	error = -list_lru_init(&qinf->qi_lru);
	if (error)
		goto out_free_qinf;

	/*
	 * See if quotainodes are setup, and if not, allocate them,
	 * and change the superblock accordingly.
	 */
	if ((error = xfs_qm_init_quotainos(mp))) {
		list_lru_destroy(&qinf->qi_lru);
		kmem_free(qinf);
		mp->m_quotainfo = NULL;
		return error;
	}
	error = xfs_qm_init_quotainos(mp);
	if (error)
		goto out_free_lru;

	INIT_RADIX_TREE(&qinf->qi_uquota_tree, GFP_NOFS);
	INIT_RADIX_TREE(&qinf->qi_gquota_tree, GFP_NOFS);
@@ -935,6 +930,13 @@ xfs_qm_init_quotainfo(
	qinf->qi_shrinker.flags = SHRINKER_NUMA_AWARE;
	register_shrinker(&qinf->qi_shrinker);
	return 0;

out_free_lru:
	list_lru_destroy(&qinf->qi_lru);
out_free_qinf:
	kmem_free(qinf);
	mp->m_quotainfo = NULL;
	return error;
}