Patch "IB/rxe: Fix a MR reference leak in check_rkey()" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
IB/rxe: Fix a MR reference leak in check_rkey()
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ib-rxe-fix-a-mr-reference-leak-in-check_rkey.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Oct 5 10:28:31 CEST 2017
From: Bart Van Assche <[email protected]>
Date: Tue, 10 Jan 2017 11:15:51 -0800
Subject: IB/rxe: Fix a MR reference leak in check_rkey()
From: Bart Van Assche <[email protected]>
[ Upstream commit b3a459961014b14c267544c327db033669493295 ]
Avoid that calling check_rkey() for mem->state == RXE_MEM_STATE_FREE triggers an MR reference leak.
--- drivers/infiniband/sw/rxe/rxe_resp.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
drivers/infiniband/sw/rxe/rxe_resp.c +10 -10
@@ -418,7 +418,7 @@ static enum resp_states check_length(strstatic enum resp_states check_rkey (struct rxe_qp *qp,struct rxe_pkt_info *pkt) { -struct rxe_mem *mem; +struct rxe_mem *mem =NULL ;u64 va;u32 rkey;u32 resid;
@@ -452,38 +452,38 @@ static enum resp_states check_rkey(struc mem =lookup_mem (qp->pd, access, rkey, lookup_remote);if (!mem) { state =RESPST_ERR_RKEY_VIOLATION ; - goto err1; + goto err; }if (unlikely (mem->state ==RXE_MEM_STATE_FREE )) { state =RESPST_ERR_RKEY_VIOLATION ; - goto err1; + goto err; }if (mem_check_range (mem, va, resid)) { state =RESPST_ERR_RKEY_VIOLATION ; - goto err2; + goto err; }if (pkt->mask &RXE_WRITE_MASK ) {if (resid > mtu) {if (pktlen != mtu ||bth_pad (pkt)) { state =RESPST_ERR_LENGTH ; - goto err2; + goto err; } qp->resp.resid = mtu; }else {if (pktlen != resid) { state =RESPST_ERR_LENGTH ; - goto err2; + goto err; }if ((bth_pad (pkt) != (0x3 & (-resid)))) {/* This case may not be exactly that * but nothing else fits. */ state =RESPST_ERR_LENGTH ; - goto err2; + goto err; } } }
@@ -493,9 +493,9 @@ static enum resp_states check_rkey(struc qp->resp.mr = mem;return RESPST_EXECUTE ; -err2: -rxe_drop_ref (mem); -err1: +err: +if (mem) +rxe_drop_ref (mem);return state; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/ib-rxe-add-a-runtime-check-in-alloc_index.patch queue-4.9/ib-rxe-fix-a-mr-reference-leak-in-check_rkey.patch