diff options
author | J. Bruce Fields <bfields@redhat.com> | 2013-04-29 14:03:30 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2013-04-29 16:23:34 -0400 |
commit | b1df7637232927ac69ed1a32e9c6b768f635b7d4 (patch) | |
tree | cf5fdd96cccb3a89f4e0dea895775eb7c428c533 /fs/nfsd | |
parent | dd30333cf5a2f9dfecda5c6f4523133f13847aae (diff) | |
parent | 721ccfb79b6f74f4052de70236d24047e73682d4 (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.c | 24 |
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 | ||
3084 | static __be32 | 3084 | static __be32 |
3085 | nfsd4_do_encode_secinfo(struct nfsd4_compoundres *resp, | 3085 | nfsd4_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 | |||
3144 | out: | 3142 | out: |
3145 | if (exp) | 3143 | if (exp) |
3146 | exp_put(exp); | 3144 | exp_put(exp); |