Commit 001ab5a6 authored by David Howells's avatar David Howells

afs: Fix the handling of CB.InitCallBackState3 to find the server by UUID

Fix the handling of the CB.InitCallBackState3 service call to find the
record of a server that we're using by looking it up by the UUID passed as
the parameter rather than by its address (of which it might have many, and
which may change).

Fixes: c35eccb1 ("[AFS]: Implement the CB.InitCallBackState3 operation.")
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
parent 3d9fa911
...@@ -341,7 +341,6 @@ static int afs_deliver_cb_init_call_back_state(struct afs_call *call) ...@@ -341,7 +341,6 @@ static int afs_deliver_cb_init_call_back_state(struct afs_call *call)
*/ */
static int afs_deliver_cb_init_call_back_state3(struct afs_call *call) static int afs_deliver_cb_init_call_back_state3(struct afs_call *call)
{ {
struct sockaddr_rxrpc srx;
struct afs_server *server; struct afs_server *server;
struct afs_uuid *r; struct afs_uuid *r;
unsigned loop; unsigned loop;
...@@ -398,8 +397,9 @@ static int afs_deliver_cb_init_call_back_state3(struct afs_call *call) ...@@ -398,8 +397,9 @@ static int afs_deliver_cb_init_call_back_state3(struct afs_call *call)
/* we'll need the file server record as that tells us which set of /* we'll need the file server record as that tells us which set of
* vnodes to operate upon */ * vnodes to operate upon */
rxrpc_kernel_get_peer(call->net->socket, call->rxcall, &srx); rcu_read_lock();
server = afs_find_server(call->net, &srx); server = afs_find_server_by_uuid(call->net, call->request);
rcu_read_unlock();
if (!server) if (!server)
return -ENOTCONN; return -ENOTCONN;
call->cm_server = server; call->cm_server = server;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment