lkml.org 
[lkml]   [2018]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.14 058/100] nfsd: Ensure we check stateid validity in the seqid operation checks
    Date
    From: Trond Myklebust <trond.myklebust@primarydata.com>

    [ Upstream commit 9271d7e509c1bfc0b9a418caec29ec8d1ac38270 ]

    After taking the stateid st_mutex, we want to know that the stateid
    still represents valid state before performing any non-idempotent
    actions.

    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    fs/nfsd/nfs4state.c | 12 +++---------
    1 file changed, 3 insertions(+), 9 deletions(-)

    diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
    index 5ec0ca5cbc1e..c927dbc8f490 100644
    --- a/fs/nfsd/nfs4state.c
    +++ b/fs/nfsd/nfs4state.c
    @@ -5184,15 +5184,9 @@ static __be32 nfs4_seqid_op_checks(struct nfsd4_compound_state *cstate, stateid_
    status = nfsd4_check_seqid(cstate, sop, seqid);
    if (status)
    return status;
    - if (stp->st_stid.sc_type == NFS4_CLOSED_STID
    - || stp->st_stid.sc_type == NFS4_REVOKED_DELEG_STID)
    - /*
    - * "Closed" stateid's exist *only* to return
    - * nfserr_replay_me from the previous step, and
    - * revoked delegations are kept only for free_stateid.
    - */
    - return nfserr_bad_stateid;
    - mutex_lock(&stp->st_mutex);
    + status = nfsd4_lock_ol_stateid(stp);
    + if (status != nfs_ok)
    + return status;
    status = check_stateid_generation(stateid, &stp->st_stid.sc_stateid, nfsd4_has_session(cstate));
    if (status == nfs_ok)
    status = nfs4_check_fh(current_fh, &stp->st_stid);
    --
    2.11.0
    \
     
     \ /
      Last update: 2018-01-24 05:56    [W:4.415 / U:0.360 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site