Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9f76628d authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'for-3.18' of git://linux-nfs.org/~bfields/linux

Pull two nfsd fixes from Bruce Fields:
 "One regression from the 3.16 xdr rewrite, one an older bug exposed by
  a separate bug in the client's new SEEK code"

* 'for-3.18' of git://linux-nfs.org/~bfields/linux:
  nfsd4: fix crash on unknown operation number
  nfsd4: fix response size estimation for OP_SEQUENCE
parents 6234056e 51904b08
Loading
Loading
Loading
Loading
+5 −2
Original line number Original line Diff line number Diff line
@@ -1272,7 +1272,8 @@ static bool need_wrongsec_check(struct svc_rqst *rqstp)
	 */
	 */
	if (argp->opcnt == resp->opcnt)
	if (argp->opcnt == resp->opcnt)
		return false;
		return false;

	if (next->opnum == OP_ILLEGAL)
		return false;
	nextd = OPDESC(next);
	nextd = OPDESC(next);
	/*
	/*
	 * Rest of 2.6.3.1.1: certain operations will return WRONGSEC
	 * Rest of 2.6.3.1.1: certain operations will return WRONGSEC
@@ -1589,7 +1590,8 @@ static inline u32 nfsd4_rename_rsize(struct svc_rqst *rqstp, struct nfsd4_op *op
static inline u32 nfsd4_sequence_rsize(struct svc_rqst *rqstp,
static inline u32 nfsd4_sequence_rsize(struct svc_rqst *rqstp,
				       struct nfsd4_op *op)
				       struct nfsd4_op *op)
{
{
	return NFS4_MAX_SESSIONID_LEN + 20;
	return (op_encode_hdr_size
		+ XDR_QUADLEN(NFS4_MAX_SESSIONID_LEN) + 5) * sizeof(__be32);
}
}


static inline u32 nfsd4_setattr_rsize(struct svc_rqst *rqstp, struct nfsd4_op *op)
static inline u32 nfsd4_setattr_rsize(struct svc_rqst *rqstp, struct nfsd4_op *op)
@@ -1893,6 +1895,7 @@ static struct nfsd4_operation nfsd4_ops[] = {
		.op_func = (nfsd4op_func)nfsd4_sequence,
		.op_func = (nfsd4op_func)nfsd4_sequence,
		.op_flags = ALLOWED_WITHOUT_FH | ALLOWED_AS_FIRST_OP,
		.op_flags = ALLOWED_WITHOUT_FH | ALLOWED_AS_FIRST_OP,
		.op_name = "OP_SEQUENCE",
		.op_name = "OP_SEQUENCE",
		.op_rsize_bop = (nfsd4op_rsize)nfsd4_sequence_rsize,
	},
	},
	[OP_DESTROY_CLIENTID] = {
	[OP_DESTROY_CLIENTID] = {
		.op_func = (nfsd4op_func)nfsd4_destroy_clientid,
		.op_func = (nfsd4op_func)nfsd4_destroy_clientid,