xfs: dquot shrinker doesn't check for XFS_DQFLAG_FREEING
authorDave Chinner <dchinner@redhat.com>
Thu, 8 Dec 2022 16:29:22 +0000 (08:29 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 8 Dec 2022 16:29:58 +0000 (08:29 -0800)
commit52f31ed228212ba572c44e15e818a3a5c74122c0
tree969841c970dafd1e4dae2457c4d5a3dc4c88a839
parent1f5619ed881081be300db61da552ffae7163bb72
xfs: dquot shrinker doesn't check for XFS_DQFLAG_FREEING

Resulting in a UAF if the shrinker races with some other dquot
freeing mechanism that sets XFS_DQFLAG_FREEING before the dquot is
removed from the LRU. This can occur if a dquot purge races with
drop_caches.

Reported-by: syzbot+912776840162c13db1a3@syzkaller.appspotmail.com
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/xfs_qm.c