nfsd4: properly type op_func callbacks
Pass union nfsd4_op_u to the op_func callbacks instead of using unsafe function pointer casts. It also adds two missing structures to struct nfsd4_op.u to facilitate this. Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
@@ -577,6 +577,7 @@ struct nfsd4_op {
|
||||
struct nfsd4_bind_conn_to_session bind_conn_to_session;
|
||||
struct nfsd4_create_session create_session;
|
||||
struct nfsd4_destroy_session destroy_session;
|
||||
struct nfsd4_destroy_clientid destroy_clientid;
|
||||
struct nfsd4_sequence sequence;
|
||||
struct nfsd4_reclaim_complete reclaim_complete;
|
||||
struct nfsd4_test_stateid test_stateid;
|
||||
@@ -585,6 +586,7 @@ struct nfsd4_op {
|
||||
struct nfsd4_layoutget layoutget;
|
||||
struct nfsd4_layoutcommit layoutcommit;
|
||||
struct nfsd4_layoutreturn layoutreturn;
|
||||
struct nfsd4_secinfo_no_name secinfo_no_name;
|
||||
|
||||
/* NFSv4.2 */
|
||||
struct nfsd4_fallocate allocate;
|
||||
@@ -693,27 +695,26 @@ __be32 nfsd4_encode_fattr_to_buf(__be32 **p, int words,
|
||||
struct dentry *dentry,
|
||||
u32 *bmval, struct svc_rqst *, int ignore_crossmnt);
|
||||
extern __be32 nfsd4_setclientid(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *,
|
||||
struct nfsd4_setclientid *setclid);
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_setclientid_confirm(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *,
|
||||
struct nfsd4_setclientid_confirm *setclientid_confirm);
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_exchange_id(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *, struct nfsd4_exchange_id *);
|
||||
extern __be32 nfsd4_backchannel_ctl(struct svc_rqst *, struct nfsd4_compound_state *, struct nfsd4_backchannel_ctl *);
|
||||
extern __be32 nfsd4_bind_conn_to_session(struct svc_rqst *, struct nfsd4_compound_state *, struct nfsd4_bind_conn_to_session *);
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_backchannel_ctl(struct svc_rqst *,
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_bind_conn_to_session(struct svc_rqst *,
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_create_session(struct svc_rqst *,
|
||||
struct nfsd4_compound_state *,
|
||||
struct nfsd4_create_session *);
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_sequence(struct svc_rqst *,
|
||||
struct nfsd4_compound_state *,
|
||||
struct nfsd4_sequence *);
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *u);
|
||||
extern void nfsd4_sequence_done(struct nfsd4_compoundres *resp);
|
||||
extern __be32 nfsd4_destroy_session(struct svc_rqst *,
|
||||
struct nfsd4_compound_state *,
|
||||
struct nfsd4_destroy_session *);
|
||||
extern __be32 nfsd4_destroy_clientid(struct svc_rqst *, struct nfsd4_compound_state *, struct nfsd4_destroy_clientid *);
|
||||
__be32 nfsd4_reclaim_complete(struct svc_rqst *, struct nfsd4_compound_state *, struct nfsd4_reclaim_complete *);
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_destroy_clientid(struct svc_rqst *, struct nfsd4_compound_state *,
|
||||
union nfsd4_op_u *u);
|
||||
__be32 nfsd4_reclaim_complete(struct svc_rqst *, struct nfsd4_compound_state *,
|
||||
union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_process_open1(struct nfsd4_compound_state *,
|
||||
struct nfsd4_open *open, struct nfsd_net *nn);
|
||||
extern __be32 nfsd4_process_open2(struct svc_rqst *rqstp,
|
||||
@@ -722,34 +723,29 @@ extern void nfsd4_cstate_clear_replay(struct nfsd4_compound_state *cstate);
|
||||
extern void nfsd4_cleanup_open_state(struct nfsd4_compound_state *cstate,
|
||||
struct nfsd4_open *open);
|
||||
extern __be32 nfsd4_open_confirm(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *, struct nfsd4_open_confirm *oc);
|
||||
extern __be32 nfsd4_close(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *,
|
||||
struct nfsd4_close *close);
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_close(struct svc_rqst *rqstp, struct nfsd4_compound_state *,
|
||||
union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_open_downgrade(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *,
|
||||
struct nfsd4_open_downgrade *od);
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *,
|
||||
struct nfsd4_lock *lock);
|
||||
extern __be32 nfsd4_lockt(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *,
|
||||
struct nfsd4_lockt *lockt);
|
||||
extern __be32 nfsd4_locku(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *,
|
||||
struct nfsd4_locku *locku);
|
||||
union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_lockt(struct svc_rqst *rqstp, struct nfsd4_compound_state *,
|
||||
union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_locku(struct svc_rqst *rqstp, struct nfsd4_compound_state *,
|
||||
union nfsd4_op_u *u);
|
||||
extern __be32
|
||||
nfsd4_release_lockowner(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *,
|
||||
struct nfsd4_release_lockowner *rlockowner);
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *u);
|
||||
extern void nfsd4_release_compoundargs(struct svc_rqst *rqstp);
|
||||
extern __be32 nfsd4_delegreturn(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *, struct nfsd4_delegreturn *dr);
|
||||
extern __be32 nfsd4_renew(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *, clientid_t *clid);
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_renew(struct svc_rqst *rqstp, struct nfsd4_compound_state *,
|
||||
union nfsd4_op_u *u);
|
||||
extern __be32 nfsd4_test_stateid(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *, struct nfsd4_test_stateid *test_stateid);
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *);
|
||||
extern __be32 nfsd4_free_stateid(struct svc_rqst *rqstp,
|
||||
struct nfsd4_compound_state *, struct nfsd4_free_stateid *free_stateid);
|
||||
struct nfsd4_compound_state *, union nfsd4_op_u *);
|
||||
extern void nfsd4_bump_seqid(struct nfsd4_compound_state *, __be32 nfserr);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user