NFS: NFSoRDMA bugfix
Fixes a use-after-free bug. Signed-off-by: Anna Schumaker <Anna.Schumaker@netapp.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJWCvocAAoJENfLVL+wpUDrNlYP/29jjHedFJk5ApUhmI4I4EJ0 CVXvGP4aT4wtH16kKsZ95rozIU9C0s4VwelcCc9hnE+x8zHKp1axeOi2cesOBb88 K8X0zo8gW7h7Eee/0hEAc8brPT6lcK/GFdjguiywDupRI9I1ByN9p5B/xRB8dbN6 Je43Ro989aA4Qm1ChepiYbW+0DQ88rh/3sHM6j91lOQL8AQ7M7IcDxTMCHYj8d4Q TBYNwiA/tDMGMcdpe0yRGANayM12LbwEQXDldYg9+cawdfbL1FM91kjwdAyjYscD QTL21bCPt2Uk52fG/rLoiDjJ/3xDVwEndWiGFfXAicrIF/3YliwXeHxgJO8Ah5bP Ma2IIlNRStXTdK3QUhF8lKTyDNZuLyY4CUYHNGkMpVLrC4W6NAdTWOcbxBKJA15y sGRCq4uce3JM4W0ZamzZiUkVzEE10jxH61StahzKB0Q5ep2CwMp37komZpeca88F gOkWlrnA+sjlcDCxR3oZlwAP1mv5s1E1FkuXdkazQyAj8I3UX8t/4k3Jkrnq9HmA WblV+eUPz6Z/K1aM/LLx11RXpnLID0JCF7xOo6IKZ8Ik7OPGHGQK96L8pZ9VYZgl Oz62pH7ipri9SMJRBDJi4vshxeXKj1Ufhj3cU6dGl2RSyHrvyQX/DKfMYgrYlp3g xPxY3NHwLHYWK645NvLH =Dd3t -----END PGP SIGNATURE----- Merge tag 'nfs-rdma-for-4.3-2' of git://git.linux-nfs.org/projects/anna/nfs-rdma NFS: NFSoRDMA bugfix Fixes a use-after-free bug. Signed-off-by: Anna Schumaker <Anna.Schumaker@netapp.com>
This commit is contained in:
commit
8dbb09570d
|
@ -270,8 +270,8 @@ xprt_rdma_destroy(struct rpc_xprt *xprt)
|
||||||
|
|
||||||
xprt_clear_connected(xprt);
|
xprt_clear_connected(xprt);
|
||||||
|
|
||||||
rpcrdma_buffer_destroy(&r_xprt->rx_buf);
|
|
||||||
rpcrdma_ep_destroy(&r_xprt->rx_ep, &r_xprt->rx_ia);
|
rpcrdma_ep_destroy(&r_xprt->rx_ep, &r_xprt->rx_ia);
|
||||||
|
rpcrdma_buffer_destroy(&r_xprt->rx_buf);
|
||||||
rpcrdma_ia_close(&r_xprt->rx_ia);
|
rpcrdma_ia_close(&r_xprt->rx_ia);
|
||||||
|
|
||||||
xprt_rdma_free_addresses(xprt);
|
xprt_rdma_free_addresses(xprt);
|
||||||
|
|
|
@ -755,19 +755,22 @@ rpcrdma_ep_destroy(struct rpcrdma_ep *ep, struct rpcrdma_ia *ia)
|
||||||
|
|
||||||
cancel_delayed_work_sync(&ep->rep_connect_worker);
|
cancel_delayed_work_sync(&ep->rep_connect_worker);
|
||||||
|
|
||||||
if (ia->ri_id->qp) {
|
if (ia->ri_id->qp)
|
||||||
rpcrdma_ep_disconnect(ep, ia);
|
rpcrdma_ep_disconnect(ep, ia);
|
||||||
|
|
||||||
|
rpcrdma_clean_cq(ep->rep_attr.recv_cq);
|
||||||
|
rpcrdma_clean_cq(ep->rep_attr.send_cq);
|
||||||
|
|
||||||
|
if (ia->ri_id->qp) {
|
||||||
rdma_destroy_qp(ia->ri_id);
|
rdma_destroy_qp(ia->ri_id);
|
||||||
ia->ri_id->qp = NULL;
|
ia->ri_id->qp = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rpcrdma_clean_cq(ep->rep_attr.recv_cq);
|
|
||||||
rc = ib_destroy_cq(ep->rep_attr.recv_cq);
|
rc = ib_destroy_cq(ep->rep_attr.recv_cq);
|
||||||
if (rc)
|
if (rc)
|
||||||
dprintk("RPC: %s: ib_destroy_cq returned %i\n",
|
dprintk("RPC: %s: ib_destroy_cq returned %i\n",
|
||||||
__func__, rc);
|
__func__, rc);
|
||||||
|
|
||||||
rpcrdma_clean_cq(ep->rep_attr.send_cq);
|
|
||||||
rc = ib_destroy_cq(ep->rep_attr.send_cq);
|
rc = ib_destroy_cq(ep->rep_attr.send_cq);
|
||||||
if (rc)
|
if (rc)
|
||||||
dprintk("RPC: %s: ib_destroy_cq returned %i\n",
|
dprintk("RPC: %s: ib_destroy_cq returned %i\n",
|
||||||
|
|
Loading…
Reference in New Issue