J. Bruce Fields : > On Tue, Nov 09, 2010 at 09:39:23AM +0800, Mi Jinlong wrote: >> According to RFC, the argument of ssv_sp_parms4 is: >> >> struct ssv_sp_parms4 { >> state_protect_ops4 ssp_ops; >> sec_oid4 ssp_hash_algs<>; >> sec_oid4 ssp_encr_algs<>; >> uint32_t ssp_window; >> uint32_t ssp_num_gss_handles; >> }; >> >> If client send a exchange_id with SP4_SSV, server cann't decode >> the SP4_SSV's ssp_hash_algs and ssp_encr_algs arguments correctly. >> >> Because the kernel treat the two arguments as a signal >> sec_oid4 struct, but should be a set of sec_oid4 struct. > > That looks correct, thanks. > > (How are you testing this?) I use the pynfs41 test site at your git tree. (EID50) thanks, Mi Jinlong > > --b. > >> Signed-off-by: Mi Jinlong <mijinlong@xxxxxxxxxxxxxx> >> --- >> fs/nfsd/nfs4xdr.c | 22 +++++++++++++++------- >> 1 files changed, 15 insertions(+), 7 deletions(-) >> >> diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c >> index f35a94a..71d7d33 100644 >> --- a/fs/nfsd/nfs4xdr.c >> +++ b/fs/nfsd/nfs4xdr.c >> @@ -1005,7 +1005,7 @@ static __be32 >> nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, >> struct nfsd4_exchange_id *exid) >> { >> - int dummy; >> + int dummy, tmp; >> DECODE_HEAD; >> >> READ_BUF(NFS4_VERIFIER_SIZE); >> @@ -1053,15 +1053,23 @@ nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, >> >> /* ssp_hash_algs<> */ >> READ_BUF(4); >> - READ32(dummy); >> - READ_BUF(dummy); >> - p += XDR_QUADLEN(dummy); >> + READ32(tmp); >> + while (tmp--) { >> + READ_BUF(4); >> + READ32(dummy); >> + READ_BUF(dummy); >> + p += XDR_QUADLEN(dummy); >> + } >> >> /* ssp_encr_algs<> */ >> READ_BUF(4); >> - READ32(dummy); >> - READ_BUF(dummy); >> - p += XDR_QUADLEN(dummy); >> + READ32(tmp); >> + while (tmp--) { >> + READ_BUF(4); >> + READ32(dummy); >> + READ_BUF(dummy); >> + p += XDR_QUADLEN(dummy); >> + } >> >> /* ssp_window and ssp_num_gss_handles */ >> READ_BUF(8); >> -- 1.7.0.1 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- ---- Regards Mi Jinlong -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html