Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 164611
b: refs/heads/master
c: 7077ecb
h: refs/heads/master
i:
  164609: 15f3251
  164607: 3b7227b
v: v3
  • Loading branch information
Jeff Layton authored and J. Bruce Fields committed Aug 21, 2009
1 parent d316937 commit 59a2524
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: aa9a4ec7707a5391cde556f3fa1b0eb4bca3bcf6
refs/heads/master: 7077ecbabd626cce1fcf5cc9766c83ec04d919f9
15 changes: 11 additions & 4 deletions trunk/fs/nfsd/nfs4state.c
Original file line number Diff line number Diff line change
Expand Up @@ -901,17 +901,24 @@ static void
gen_callback(struct nfs4_client *clp, struct nfsd4_setclientid *se)
{
struct nfs4_cb_conn *cb = &clp->cl_cb_conn;

/* 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))
unsigned short expected_family;

/* Currently, we only support tcp and tcp6 for the callback channel */
if (se->se_callback_netid_len == 3 &&
!memcmp(se->se_callback_netid_val, "tcp", 3))
expected_family = AF_INET;
else if (se->se_callback_netid_len == 4 &&
!memcmp(se->se_callback_netid_val, "tcp6", 4))
expected_family = AF_INET6;
else
goto out_err;

cb->cb_addrlen = rpc_uaddr2sockaddr(se->se_callback_addr_val,
se->se_callback_addr_len,
(struct sockaddr *) &cb->cb_addr,
sizeof(cb->cb_addr));

if (!cb->cb_addrlen || cb->cb_addr.ss_family != AF_INET)
if (!cb->cb_addrlen || cb->cb_addr.ss_family != expected_family)
goto out_err;

cb->cb_minorversion = 0;
Expand Down

0 comments on commit 59a2524

Please sign in to comment.