From fb6f151075c112daf30a2dcccd91999bff5dd034 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Tue, 4 Jan 2005 05:48:08 -0800 Subject: [PATCH] knfsd: check the callback netid in gen_callback. since we only support tcp, don't save the netinfo. Signed-off-by: Andy Adamson Signed-off-by: Neil Brown Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- fs/nfsd/nfs4state.c | 21 ++++++++++++++------- include/linux/nfsd/state.h | 1 - 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index ebecbd97df71..8cd8199493ec 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -420,17 +420,24 @@ gen_callback(struct nfs4_client *clp, struct nfsd4_setclientid *se) { struct nfs4_callback *cb = &clp->cl_callback; + /* Currently, we only support tcp for the callback channel */ + if ((se->se_callback_netid_len != 3) || memcmp((char *)se->se_callback_netid_val, "tcp", 3)) + goto out_err; + if ( !(parse_ipv4(se->se_callback_addr_len, se->se_callback_addr_val, - &cb->cb_addr, &cb->cb_port))) { - printk(KERN_INFO "NFSD: BAD callback address. client will not receive delegations\n"); - cb->cb_parsed = 0; - return; - } - cb->cb_netid.len = se->se_callback_netid_len; - cb->cb_netid.data = se->se_callback_netid_val; + &cb->cb_addr, &cb->cb_port))) + goto out_err; cb->cb_prog = se->se_callback_prog; cb->cb_ident = se->se_callback_ident; cb->cb_parsed = 1; + return; +out_err: + printk(KERN_INFO "NFSD: this client (clientid %08x/%08x) " + "will not receive delegations\n", + clp->cl_clientid.cl_boot, clp->cl_clientid.cl_id); + + cb->cb_parsed = 0; + return; } /* diff --git a/include/linux/nfsd/state.h b/include/linux/nfsd/state.h index 5e6c2ab760fd..c20635cc99a3 100644 --- a/include/linux/nfsd/state.h +++ b/include/linux/nfsd/state.h @@ -75,7 +75,6 @@ struct nfs4_callback { unsigned short cb_port; u32 cb_prog; u32 cb_ident; - struct xdr_netobj cb_netid; /* RPC client info */ u32 cb_set; /* successful CB_NULL call */ struct rpc_program cb_program; -- cgit v1.2.3