diff --git a/fs/afs/cmservice.c b/fs/afs/cmservice.c index 03c0a8572ef4f213559d8793514db4cde53beb94..91e92155345354b83fa1c0456cc4937acec7fd36 100644 --- a/fs/afs/cmservice.c +++ b/fs/afs/cmservice.c @@ -144,12 +144,10 @@ static void afs_cm_destructor(struct afs_call *call) * afs_deliver_cb_callback(). */ if (call->unmarshall == 5) { - ASSERT(call->server && call->count && call->request); - afs_break_callbacks(call->server, call->count, call->request); + ASSERT(call->cm_server && call->count && call->request); + afs_break_callbacks(call->cm_server, call->count, call->request); } - afs_put_server(call->net, call->server); - call->server = NULL; kfree(call->buffer); call->buffer = NULL; } @@ -170,7 +168,7 @@ static void SRXAFSCB_CallBack(struct work_struct *work) * yet */ afs_send_empty_reply(call); - afs_break_callbacks(call->server, call->count, call->request); + afs_break_callbacks(call->cm_server, call->count, call->request); afs_put_call(call); _leave(""); } @@ -290,7 +288,7 @@ static int afs_deliver_cb_callback(struct afs_call *call) server = afs_find_server(call->net, &srx); if (!server) return -ENOTCONN; - call->server = server; + call->cm_server = server; return afs_queue_call_work(call); } @@ -302,9 +300,9 @@ static void SRXAFSCB_InitCallBackState(struct work_struct *work) { struct afs_call *call = container_of(work, struct afs_call, work); - _enter("{%p}", call->server); + _enter("{%p}", call->cm_server); - afs_init_callback_state(call->server); + afs_init_callback_state(call->cm_server); afs_send_empty_reply(call); afs_put_call(call); _leave(""); @@ -335,7 +333,7 @@ static int afs_deliver_cb_init_call_back_state(struct afs_call *call) server = afs_find_server(call->net, &srx); if (!server) return -ENOTCONN; - call->server = server; + call->cm_server = server; return afs_queue_call_work(call); } @@ -407,7 +405,7 @@ static int afs_deliver_cb_init_call_back_state3(struct afs_call *call) server = afs_find_server(call->net, &srx); if (!server) return -ENOTCONN; - call->server = server; + call->cm_server = server; return afs_queue_call_work(call); } diff --git a/fs/afs/internal.h b/fs/afs/internal.h index 94b676c433c79bacd63c0c6fd18d296fe4af5321..6fa81e04aff3d3d8b80ee77875534b769b9caf0f 100644 --- a/fs/afs/internal.h +++ b/fs/afs/internal.h @@ -76,7 +76,7 @@ struct afs_call { struct rxrpc_call *rxcall; /* RxRPC call handle */ struct key *key; /* security for this call */ struct afs_net *net; /* The network namespace */ - struct afs_server *server; /* server affected by incoming CM call */ + struct afs_server *cm_server; /* Server affected by incoming CM call */ void *request; /* request data (first part) */ struct address_space *mapping; /* page set */ struct afs_writeback *wb; /* writeback being performed */ diff --git a/fs/afs/rxrpc.c b/fs/afs/rxrpc.c index d57f09b5d27b9f0429e67d9723060a37850ba8f9..ac1e25f957b1cc4ade1be1590ba9c945b28c2ef8 100644 --- a/fs/afs/rxrpc.c +++ b/fs/afs/rxrpc.c @@ -161,6 +161,7 @@ void afs_put_call(struct afs_call *call) if (call->type->destructor) call->type->destructor(call); + afs_put_server(call->net, call->cm_server); kfree(call->request); kfree(call);