diff options
author | David Howells <dhowells@redhat.com> | 2019-05-10 23:14:41 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-01-27 14:50:49 +0100 |
commit | 2d4979582b015baaf8e94e1458525efdb81c3509 (patch) | |
tree | 8848431e16c84556f5c08f2a98fe4d00d131146c /fs | |
parent | 98f5ce7e313e6475a2a32c93728084fe089c6364 (diff) |
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 <dhowells@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/afs/security.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/fs/afs/security.c b/fs/afs/security.c index 81dfedb7879f..66042b432baa 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); } /* |