NFSD: Make nfsd_genl_rqstp::rq_ops array best-effort

To enable NFSD to handle NFSv4 COMPOUNDs of unrestricted size,
resize the array in struct nfsd_genl_rqstp so it saves only up to
16 operations per COMPOUND.

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
Chuck Lever 2025-06-10 12:05:08 -04:00
parent 71bc2c6c41
commit a2d61427fb
2 changed files with 3 additions and 2 deletions

View File

@ -1569,7 +1569,8 @@ int nfsd_nl_rpc_status_get_dumpit(struct sk_buff *skb,
int j;
args = rqstp->rq_argp;
genl_rqstp.rq_opcnt = args->opcnt;
genl_rqstp.rq_opcnt = min_t(u32, args->opcnt,
ARRAY_SIZE(genl_rqstp.rq_opnum));
for (j = 0; j < genl_rqstp.rq_opcnt; j++)
genl_rqstp.rq_opnum[j] =
args->ops[j].opnum;

View File

@ -72,7 +72,7 @@ struct nfsd_genl_rqstp {
/* NFSv4 compound */
u32 rq_opcnt;
u32 rq_opnum[NFSD_MAX_OPS_PER_COMPOUND];
u32 rq_opnum[16];
};
extern struct svc_program nfsd_programs[];