mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 04:34:03 +02:00
NFSv4.1: protect destroying and nullifying bc_serv structure
When we are shutting down the client, we free the callback server structure and then at a later pointer we free the transport used by the client. Yet, it's possible that after the callback server is freed, the transport receives a backchannel request at which point we can dereferene freed memory. Instead, do the freeing the bc server and nullying bc_serv under the lock. Signed-off-by: Olga Kornievskaia <okorniev@redhat.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
6f8b26c90a
commit
9e9fdd0ad0
|
|
@ -270,7 +270,7 @@ void nfs_callback_down(int minorversion, struct net *net, struct rpc_xprt *xprt)
|
||||||
if (cb_info->users == 0) {
|
if (cb_info->users == 0) {
|
||||||
svc_set_num_threads(serv, NULL, 0);
|
svc_set_num_threads(serv, NULL, 0);
|
||||||
dprintk("nfs_callback_down: service destroyed\n");
|
dprintk("nfs_callback_down: service destroyed\n");
|
||||||
svc_destroy(&cb_info->serv);
|
xprt_svc_destroy_nullify_bc(xprt, &cb_info->serv);
|
||||||
}
|
}
|
||||||
mutex_unlock(&nfs_callback_mutex);
|
mutex_unlock(&nfs_callback_mutex);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user