@ -447,12 +447,14 @@ static int nfs4_stat_to_errno(int);
encode_sequence_maxsz + \
encode_putfh_maxsz + \
encode_open_maxsz + \
encode_access_maxsz + \
encode_getfh_maxsz + \
encode_getattr_maxsz )
# define NFS4_dec_open_sz (compound_decode_hdr_maxsz + \
decode_sequence_maxsz + \
decode_putfh_maxsz + \
decode_open_maxsz + \
decode_access_maxsz + \
decode_getfh_maxsz + \
decode_getattr_maxsz )
# define NFS4_enc_open_confirm_sz \
@ -467,11 +469,13 @@ static int nfs4_stat_to_errno(int);
encode_sequence_maxsz + \
encode_putfh_maxsz + \
encode_open_maxsz + \
encode_access_maxsz + \
encode_getattr_maxsz )
# define NFS4_dec_open_noattr_sz (compound_decode_hdr_maxsz + \
decode_sequence_maxsz + \
decode_putfh_maxsz + \
decode_open_maxsz + \
decode_access_maxsz + \
decode_getattr_maxsz )
# define NFS4_enc_open_downgrade_sz \
( compound_encode_hdr_maxsz + \
@ -2220,6 +2224,7 @@ static void nfs4_xdr_enc_open(struct rpc_rqst *req, struct xdr_stream *xdr,
encode_putfh ( xdr , args - > fh , & hdr ) ;
encode_open ( xdr , args , & hdr ) ;
encode_getfh ( xdr , & hdr ) ;
encode_access ( xdr , args - > access , & hdr ) ;
encode_getfattr_open ( xdr , args - > bitmask , args - > open_bitmap , & hdr ) ;
encode_nops ( & hdr ) ;
}
@ -2256,6 +2261,7 @@ static void nfs4_xdr_enc_open_noattr(struct rpc_rqst *req,
encode_sequence ( xdr , & args - > seq_args , & hdr ) ;
encode_putfh ( xdr , args - > fh , & hdr ) ;
encode_open ( xdr , args , & hdr ) ;
encode_access ( xdr , args - > access , & hdr ) ;
encode_getfattr ( xdr , args - > bitmask , & hdr ) ;
encode_nops ( & hdr ) ;
}
@ -4099,7 +4105,7 @@ out_overflow:
return - EIO ;
}
static int decode_access ( struct xdr_stream * xdr , struct nfs4_accessres * access )
static int decode_access ( struct xdr_stream * xdr , u32 * supported , u32 * access )
{
__be32 * p ;
uint32_t supp , acc ;
@ -4113,8 +4119,8 @@ static int decode_access(struct xdr_stream *xdr, struct nfs4_accessres *access)
goto out_overflow ;
supp = be32_to_cpup ( p + + ) ;
acc = be32_to_cpup ( p ) ;
access - > supported = supp ;
access - > access = acc ;
* supported = supp ;
* access = acc ;
return 0 ;
out_overflow :
print_overflow_msg ( __func__ , xdr ) ;
@ -5892,7 +5898,7 @@ static int nfs4_xdr_dec_access(struct rpc_rqst *rqstp, struct xdr_stream *xdr,
status = decode_putfh ( xdr ) ;
if ( status ! = 0 )
goto out ;
status = decode_access ( xdr , res ) ;
status = decode_access ( xdr , & res - > supported , & res - > acces s ) ;
if ( status ! = 0 )
goto out ;
decode_getfattr ( xdr , res - > fattr , res - > server ) ;
@ -6233,6 +6239,7 @@ static int nfs4_xdr_dec_open(struct rpc_rqst *rqstp, struct xdr_stream *xdr,
status = decode_getfh ( xdr , & res - > fh ) ;
if ( status )
goto out ;
decode_access ( xdr , & res - > access_supported , & res - > access_result ) ;
decode_getfattr ( xdr , res - > f_attr , res - > server ) ;
out :
return status ;
@ -6281,6 +6288,7 @@ static int nfs4_xdr_dec_open_noattr(struct rpc_rqst *rqstp,
status = decode_open ( xdr , res ) ;
if ( status )
goto out ;
decode_access ( xdr , & res - > access_supported , & res - > access_result ) ;
decode_getfattr ( xdr , res - > f_attr , res - > server ) ;
out :
return status ;