From: David Howells Date: Fri, 10 May 2019 22:14:41 +0000 (+0100) Subject: afs: Fix double inc of vnode->cb_break X-Git-Tag: v4.19.99~259 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2d4979582b015baaf8e94e1458525efdb81c3509;p=platform%2Fkernel%2Flinux-rpi.git afs: Fix double inc of vnode->cb_break [ Upstream commit fd711586bb7d63f257da5eff234e68c446ac35ea ] When __afs_break_callback() clears the CB_PROMISED flag, it increments vnode->cb_break to trigger a future refetch of the status and callback - however it also calls afs_clear_permits(), which also increments vnode->cb_break. Fix this by removing the increment from afs_clear_permits(). Whilst we're at it, fix the conditional call to afs_put_permits() as the function checks to see if the argument is NULL, so the check is redundant. Fixes: be080a6f43c4 ("afs: Overhaul permit caching"); Signed-off-by: David Howells Signed-off-by: Sasha Levin --- diff --git a/fs/afs/security.c b/fs/afs/security.c index 81dfedb..66042b4 100644 --- a/fs/afs/security.c +++ b/fs/afs/security.c @@ -87,11 +87,9 @@ void afs_clear_permits(struct afs_vnode *vnode) permits = rcu_dereference_protected(vnode->permit_cache, lockdep_is_held(&vnode->lock)); RCU_INIT_POINTER(vnode->permit_cache, NULL); - vnode->cb_break++; spin_unlock(&vnode->lock); - if (permits) - afs_put_permits(permits); + afs_put_permits(permits); } /*