aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@redhat.com>2013-04-29 14:03:30 -0400
committerJ. Bruce Fields <bfields@redhat.com>2013-04-29 16:23:34 -0400
commitb1df7637232927ac69ed1a32e9c6b768f635b7d4 (patch)
treecf5fdd96cccb3a89f4e0dea895775eb7c428c533 /fs/nfsd
parentdd30333cf5a2f9dfecda5c6f4523133f13847aae (diff)
parent721ccfb79b6f74f4052de70236d24047e73682d4 (diff)
Merge branch 'nfs-for-next' of git://linux-nfs.org/~trondmy/nfs-2.6 into for-3.10
Note conflict: Chuck's patches modified (and made static) gss_mech_get_by_OID, which is still needed by gss-proxy patches. The conflict resolution is a bit minimal; we may want some more cleanup.
Diffstat (limited to 'fs/nfsd')
-rw-r--r--fs/nfsd/nfs4xdr.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index 888a600dad8c..78272185a13d 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -3083,10 +3083,9 @@ nfsd4_encode_rename(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_
3083 3083
3084static __be32 3084static __be32
3085nfsd4_do_encode_secinfo(struct nfsd4_compoundres *resp, 3085nfsd4_do_encode_secinfo(struct nfsd4_compoundres *resp,
3086 __be32 nfserr,struct svc_export *exp) 3086 __be32 nfserr, struct svc_export *exp)
3087{ 3087{
3088 int i = 0; 3088 u32 i, nflavs;
3089 u32 nflavs;
3090 struct exp_flavor_info *flavs; 3089 struct exp_flavor_info *flavs;
3091 struct exp_flavor_info def_flavs[2]; 3090 struct exp_flavor_info def_flavs[2];
3092 __be32 *p; 3091 __be32 *p;
@@ -3117,30 +3116,29 @@ nfsd4_do_encode_secinfo(struct nfsd4_compoundres *resp,
3117 WRITE32(nflavs); 3116 WRITE32(nflavs);
3118 ADJUST_ARGS(); 3117 ADJUST_ARGS();
3119 for (i = 0; i < nflavs; i++) { 3118 for (i = 0; i < nflavs; i++) {
3120 u32 flav = flavs[i].pseudoflavor; 3119 struct rpcsec_gss_info info;
3121 struct gss_api_mech *gm = gss_mech_get_by_pseudoflavor(flav);
3122 3120
3123 if (gm) { 3121 if (rpcauth_get_gssinfo(flavs[i].pseudoflavor, &info) == 0) {
3124 RESERVE_SPACE(4); 3122 RESERVE_SPACE(4);
3125 WRITE32(RPC_AUTH_GSS); 3123 WRITE32(RPC_AUTH_GSS);
3126 ADJUST_ARGS(); 3124 ADJUST_ARGS();
3127 RESERVE_SPACE(4 + gm->gm_oid.len); 3125 RESERVE_SPACE(4 + info.oid.len);
3128 WRITE32(gm->gm_oid.len); 3126 WRITE32(info.oid.len);
3129 WRITEMEM(gm->gm_oid.data, gm->gm_oid.len); 3127 WRITEMEM(info.oid.data, info.oid.len);
3130 ADJUST_ARGS(); 3128 ADJUST_ARGS();
3131 RESERVE_SPACE(4); 3129 RESERVE_SPACE(4);
3132 WRITE32(0); /* qop */ 3130 WRITE32(info.qop);
3133 ADJUST_ARGS(); 3131 ADJUST_ARGS();
3134 RESERVE_SPACE(4); 3132 RESERVE_SPACE(4);
3135 WRITE32(gss_pseudoflavor_to_service(gm, flav)); 3133 WRITE32(info.service);
3136 ADJUST_ARGS(); 3134 ADJUST_ARGS();
3137 gss_mech_put(gm);
3138 } else { 3135 } else {
3139 RESERVE_SPACE(4); 3136 RESERVE_SPACE(4);
3140 WRITE32(flav); 3137 WRITE32(flavs[i].pseudoflavor);
3141 ADJUST_ARGS(); 3138 ADJUST_ARGS();
3142 } 3139 }
3143 } 3140 }
3141
3144out: 3142out:
3145 if (exp) 3143 if (exp)
3146 exp_put(exp); 3144 exp_put(exp);