aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs4proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfsd/nfs4proc.c')
-rw-r--r--fs/nfsd/nfs4proc.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index 095431a35722..f80c3997d24c 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -780,6 +780,29 @@ nfsd4_secinfo(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
780} 780}
781 781
782static __be32 782static __be32
783nfsd4_secinfo_no_name(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
784 struct nfsd4_secinfo_no_name *sin)
785{
786 __be32 err;
787
788 switch (sin->sin_style) {
789 case NFS4_SECINFO_STYLE4_CURRENT_FH:
790 break;
791 case NFS4_SECINFO_STYLE4_PARENT:
792 err = nfsd4_do_lookupp(rqstp, &cstate->current_fh);
793 if (err)
794 return err;
795 break;
796 default:
797 return nfserr_inval;
798 }
799 exp_get(cstate->current_fh.fh_export);
800 sin->sin_exp = cstate->current_fh.fh_export;
801 fh_put(&cstate->current_fh);
802 return nfs_ok;
803}
804
805static __be32
783nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, 806nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
784 struct nfsd4_setattr *setattr) 807 struct nfsd4_setattr *setattr)
785{ 808{
@@ -1327,6 +1350,10 @@ static struct nfsd4_operation nfsd4_ops[] = {
1327 .op_flags = ALLOWED_WITHOUT_FH, 1350 .op_flags = ALLOWED_WITHOUT_FH,
1328 .op_name = "OP_RECLAIM_COMPLETE", 1351 .op_name = "OP_RECLAIM_COMPLETE",
1329 }, 1352 },
1353 [OP_SECINFO_NO_NAME] = {
1354 .op_func = (nfsd4op_func)nfsd4_secinfo_no_name,
1355 .op_name = "OP_SECINFO_NO_NAME",
1356 },
1330}; 1357};
1331 1358
1332static const char *nfsd4_op_name(unsigned opnum) 1359static const char *nfsd4_op_name(unsigned opnum)