From: NeilBrown 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 --- 25-akpm/fs/nfsd/nfs4state.c | 21 ++++++++++++++------- 25-akpm/include/linux/nfsd/state.h | 1 - 2 files changed, 14 insertions(+), 8 deletions(-) diff -puN fs/nfsd/nfs4state.c~knfsd-check-the-callback-netid-in-gen_callback fs/nfsd/nfs4state.c --- 25/fs/nfsd/nfs4state.c~knfsd-check-the-callback-netid-in-gen_callback Fri Dec 17 15:08:27 2004 +++ 25-akpm/fs/nfsd/nfs4state.c Fri Dec 17 15:08:27 2004 @@ -420,17 +420,24 @@ gen_callback(struct nfs4_client *clp, st { 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 -puN include/linux/nfsd/state.h~knfsd-check-the-callback-netid-in-gen_callback include/linux/nfsd/state.h --- 25/include/linux/nfsd/state.h~knfsd-check-the-callback-netid-in-gen_callback Fri Dec 17 15:08:27 2004 +++ 25-akpm/include/linux/nfsd/state.h Fri Dec 17 15:08:27 2004 @@ -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; _