diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2013-01-08 15:31:13 +0100 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2013-02-01 16:13:47 +0100 |
commit | 3dc0da278e2b26fa8e353b3a962b2c89e184d353 (patch) | |
tree | 1d1015dfca92b1cd9fbd42baeb0e8b1f3a66730c /net/sunrpc/xprtsock.c | |
parent | SUNRPC: Pass a pointer to struct rpc_xprt to the connect callback (diff) | |
download | linux-3dc0da278e2b26fa8e353b3a962b2c89e184d353.tar.xz linux-3dc0da278e2b26fa8e353b3a962b2c89e184d353.zip |
SUNRPC: Fix an RCU dereference in xs_local_rpcbind
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'net/sunrpc/xprtsock.c')
-rw-r--r-- | net/sunrpc/xprtsock.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 1897181d7438..f7d6e4f8c162 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -1731,7 +1731,9 @@ static int xs_bind(struct sock_xprt *transport, struct socket *sock) */ static void xs_local_rpcbind(struct rpc_task *task) { - xprt_set_bound(task->tk_xprt); + rcu_read_lock(); + xprt_set_bound(rcu_dereference(task->tk_client->cl_xprt)); + rcu_read_unlock(); } static void xs_local_set_port(struct rpc_xprt *xprt, unsigned short port) |