浏览代码

SUNRPC: Fix an RCU dereference in xs_local_rpcbind

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Trond Myklebust 12 年之前
父节点
当前提交
3dc0da278e
共有 1 个文件被更改,包括 3 次插入1 次删除
  1. 3 1
      net/sunrpc/xprtsock.c

+ 3 - 1
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)
 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)
 static void xs_local_set_port(struct rpc_xprt *xprt, unsigned short port)