lkml.org 
[lkml]   [2020]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 378/639] afs: Fix double inc of vnode->cb_break
    Date
    From: David Howells <dhowells@redhat.com>

    [ 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>
    ---
    fs/afs/security.c | 4 +---
    1 file changed, 1 insertion(+), 3 deletions(-)

    diff --git a/fs/afs/security.c b/fs/afs/security.c
    index 81dfedb7879ff..66042b432baa8 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);
    }

    /*
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-01-24 12:21    [W:2.381 / U:4.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site