quota: missing lock in dqcache_shrink_scan()
Commit1ab6c4997e
(fs: convert fs shrinkers to new scan/count API) accidentally removed locking from quota shrinker. Fix it - dqcache_shrink_scan() should use dq_list_lock to protect the scan on free_dquots list. CC: stable@vger.kernel.org Fixes:1ab6c4997e
Signed-off-by: Niu Yawei <yawei.niu@intel.com> Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
1795cd9b3a
commit
d68aab6b8f
|
@ -702,6 +702,7 @@ dqcache_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
|
|||
struct dquot *dquot;
|
||||
unsigned long freed = 0;
|
||||
|
||||
spin_lock(&dq_list_lock);
|
||||
head = free_dquots.prev;
|
||||
while (head != &free_dquots && sc->nr_to_scan) {
|
||||
dquot = list_entry(head, struct dquot, dq_free);
|
||||
|
@ -713,6 +714,7 @@ dqcache_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
|
|||
freed++;
|
||||
head = free_dquots.prev;
|
||||
}
|
||||
spin_unlock(&dq_list_lock);
|
||||
return freed;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue