mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 05:40:55 +07:00
NFSv4.1: Don't confuse target_highest_slotid and max_slots in cb_recall_slot
Don't confuse the table size and the target_highest_slotid... Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
ce008c4bb9
commit
d5fb4ce33e
@ -142,7 +142,7 @@ extern __be32 nfs4_callback_recallany(struct cb_recallanyargs *args,
|
||||
|
||||
struct cb_recallslotargs {
|
||||
struct sockaddr *crsa_addr;
|
||||
uint32_t crsa_target_max_slots;
|
||||
uint32_t crsa_target_highest_slotid;
|
||||
};
|
||||
extern __be32 nfs4_callback_recallslot(struct cb_recallslotargs *args,
|
||||
void *dummy,
|
||||
|
@ -561,22 +561,20 @@ __be32 nfs4_callback_recallslot(struct cb_recallslotargs *args, void *dummy,
|
||||
if (!cps->clp) /* set in cb_sequence */
|
||||
goto out;
|
||||
|
||||
dprintk_rcu("NFS: CB_RECALL_SLOT request from %s target max slots %d\n",
|
||||
dprintk_rcu("NFS: CB_RECALL_SLOT request from %s target highest slotid %d\n",
|
||||
rpc_peeraddr2str(cps->clp->cl_rpcclient, RPC_DISPLAY_ADDR),
|
||||
args->crsa_target_max_slots);
|
||||
args->crsa_target_highest_slotid);
|
||||
|
||||
fc_tbl = &cps->clp->cl_session->fc_slot_table;
|
||||
|
||||
status = htonl(NFS4ERR_BAD_HIGH_SLOT);
|
||||
if (args->crsa_target_max_slots > fc_tbl->max_slots ||
|
||||
args->crsa_target_max_slots < 1)
|
||||
if (args->crsa_target_highest_slotid >= fc_tbl->max_slots ||
|
||||
args->crsa_target_highest_slotid < 1)
|
||||
goto out;
|
||||
|
||||
status = htonl(NFS4_OK);
|
||||
if (args->crsa_target_max_slots == fc_tbl->max_slots)
|
||||
goto out;
|
||||
|
||||
nfs41_set_target_slotid(fc_tbl, args->crsa_target_max_slots);
|
||||
nfs41_set_target_slotid(fc_tbl, args->crsa_target_highest_slotid);
|
||||
nfs41_handle_recall_slot(cps->clp);
|
||||
out:
|
||||
dprintk("%s: exit with status = %d\n", __func__, ntohl(status));
|
||||
|
@ -520,7 +520,7 @@ static __be32 decode_recallslot_args(struct svc_rqst *rqstp,
|
||||
p = read_buf(xdr, 4);
|
||||
if (unlikely(p == NULL))
|
||||
return htonl(NFS4ERR_BADXDR);
|
||||
args->crsa_target_max_slots = ntohl(*p++);
|
||||
args->crsa_target_highest_slotid = ntohl(*p++);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user