Patch "xfs: quota: check result of register_shrinker()" has been added to the 4.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
xfs: quota: check result of register_shrinker()
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
xfs-quota-check-result-of-register_shrinker.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Wed Feb 28 16:23:28 CET 2018
From: Aliaksei Karaliou <[email protected]>
Date: Thu, 21 Dec 2017 13:18:26 -0800
Subject: xfs: quota: check result of register_shrinker()
From: Aliaksei Karaliou <[email protected]>
[ Upstream commit 3a3882ff26fbdbaf5f7e13f6a0bccfbf7121041d ]
xfs_qm_init_quotainfo() does not check result of register_shrinker() which was tagged as __must_check recently, reported by sparse.
--- fs/xfs/xfs_qm.c | 45 +++++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 16 deletions(-)
fs/xfs/xfs_qm.c +29 -16
@@ -48,7 +48,7 @@ STATIC int xfs_qm_init_quotainos(xfs_mount_t *); STATIC int xfs_qm_init_quotainfo(xfs_mount_t *); - +STATIC void xfs_qm_destroy_quotainos(xfs_quotainfo_t *qi); STATIC void xfs_qm_dqfree_one(struct xfs_dquot *dqp);/* * We use the batch lookup interface to iterate over the dquots as it
@@ -695,9 +695,17 @@ xfs_qm_init_quotainfo( qinf->qi_shrinker.scan_objects = xfs_qm_shrink_scan; qinf->qi_shrinker.seeks =DEFAULT_SEEKS ; qinf->qi_shrinker.flags =SHRINKER_NUMA_AWARE ; -register_shrinker (&qinf->qi_shrinker); + + error =register_shrinker (&qinf->qi_shrinker); +if (error) + goto out_free_inos; +return 0 ; +out_free_inos: +mutex_destroy (&qinf->qi_quotaofflock); +mutex_destroy (&qinf->qi_tree_lock); +xfs_qm_destroy_quotainos (qinf); out_free_lru:list_lru_destroy (&qinf->qi_lru); out_free_qinf:
@@ -706,7 +714,6 @@ out_free_qinf:return error; } -/* * Gets called when unmounting a filesystem or when all quotas get * turned off.
@@ -723,19 +730,7 @@ xfs_qm_destroy_quotainfo(unregister_shrinker (&qi->qi_shrinker);list_lru_destroy (&qi->qi_lru); - -if (qi->qi_uquotaip) { -IRELE (qi->qi_uquotaip); - qi->qi_uquotaip =NULL ;/* paranoia */ - } -if (qi->qi_gquotaip) { -IRELE (qi->qi_gquotaip); - qi->qi_gquotaip =NULL ; - } -if (qi->qi_pquotaip) { -IRELE (qi->qi_pquotaip); - qi->qi_pquotaip =NULL ; - } +xfs_qm_destroy_quotainos (qi);mutex_destroy (&qi->qi_tree_lock);mutex_destroy (&qi->qi_quotaofflock);kmem_free (qi);
@@ -1601,6 +1596,24 @@ error_rele: } STATIC void +xfs_qm_destroy_quotainos ( +xfs_quotainfo_t *qi) +{ +if (qi->qi_uquotaip) { +IRELE (qi->qi_uquotaip); + qi->qi_uquotaip =NULL ;/* paranoia */ + } +if (qi->qi_gquotaip) { +IRELE (qi->qi_gquotaip); + qi->qi_gquotaip =NULL ; + } +if (qi->qi_pquotaip) { +IRELE (qi->qi_pquotaip); + qi->qi_pquotaip =NULL ; + } +} + +STATIC voidxfs_qm_dqfree_one (struct xfs_dquot *dqp) {
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/xfs-quota-fix-missed-destroy-of-qi_tree_lock.patch queue-4.14/xfs-quota-check-result-of-register_shrinker.patch