* [PATCH] RDMA/qib: Fix MR reference count leak on write with immediate
@ 2017-06-06 15:02 Mike Marciniszyn
2017-06-07 7:47 ` kbuild test robot
0 siblings, 1 reply; 3+ messages in thread
From: Mike Marciniszyn @ 2017-06-06 15:02 UTC (permalink / raw)
To: stable-u79uwXL29TY76Z2rM5mHXA
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA,
stable-commits-u79uwXL29TY76Z2rM5mHXA
commit 1feb40067cf04ae48d65f728d62ca255c9449178 upstream.
The handling of IB_RDMA_WRITE_ONLY_WITH_IMMEDIATE will leak a memory
reference when a buffer cannot be allocated for returning the immediate
data.
The issue is that the rkey validation has already occurred and the RNR
nak fails to release the reference that was fruitlessly gotten. The
the peer will send the identical single packet request when its RNR
timer pops.
The fix is to release the held reference prior to the rnr nak exit.
This is the only sequence the requires both rkey validation and the
buffer allocation on the same packet.
[This backports the fix for pre-rdmavt based qib drivers]
Cc: <stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> # 3.10.x,3.16.x,4.1.x,4.4.x
Tested-by: Tadeusz Struk <tadeusz.struk-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Reviewed-by: Dennis Dalessandro <dennis.dalessandro-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Signed-off-by: Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
drivers/infiniband/hw/qib/qib_rc.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/infiniband/hw/qib/qib_rc.c b/drivers/infiniband/hw/qib/qib_rc.c
index e6b7556..cbc4216 100644
--- a/drivers/infiniband/hw/qib/qib_rc.c
+++ b/drivers/infiniband/hw/qib/qib_rc.c
@@ -2088,8 +2088,10 @@ send_last:
ret = qib_get_rwqe(qp, 1);
if (ret < 0)
goto nack_op_err;
- if (!ret)
+ if (!ret) {
+ qib_put_ss(&qp->r_sge);
goto rnr_nak;
+ }
wc.ex.imm_data = ohdr->u.rc.imm_data;
hdrsize += 4;
wc.wc_flags = IB_WC_WITH_IMM;
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] RDMA/qib: Fix MR reference count leak on write with immediate
2017-06-06 15:02 [PATCH] RDMA/qib: Fix MR reference count leak on write with immediate Mike Marciniszyn
@ 2017-06-07 7:47 ` kbuild test robot
[not found] ` <201706071515.DptFcIHE%fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
0 siblings, 1 reply; 3+ messages in thread
From: kbuild test robot @ 2017-06-07 7:47 UTC (permalink / raw)
To: Mike Marciniszyn; +Cc: kbuild-all, stable, linux-rdma, stable-commits
[-- Attachment #1: Type: text/plain, Size: 1482 bytes --]
Hi Mike,
[auto build test ERROR on rdma/master]
[cannot apply to v4.12-rc4 next-20170607]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Mike-Marciniszyn/RDMA-qib-Fix-MR-reference-count-leak-on-write-with-immediate/20170607-150924
base: https://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git master
config: x86_64-randconfig-x019-201723 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All errors (new ones prefixed by >>):
drivers/infiniband/hw/qib/qib_rc.c: In function 'qib_rc_rcv':
>> drivers/infiniband/hw/qib/qib_rc.c:1960:4: error: implicit declaration of function 'qib_put_ss' [-Werror=implicit-function-declaration]
qib_put_ss(&qp->r_sge);
^~~~~~~~~~
cc1: some warnings being treated as errors
vim +/qib_put_ss +1960 drivers/infiniband/hw/qib/qib_rc.c
1954 else if (opcode == OP(RDMA_WRITE_ONLY))
1955 goto no_immediate_data;
1956 ret = qib_get_rwqe(qp, 1);
1957 if (ret < 0)
1958 goto nack_op_err;
1959 if (!ret) {
> 1960 qib_put_ss(&qp->r_sge);
1961 goto rnr_nak;
1962 }
1963 wc.ex.imm_data = ohdr->u.rc.imm_data;
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 31762 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [PATCH] RDMA/qib: Fix MR reference count leak on write with immediate
[not found] ` <201706071515.DptFcIHE%fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
@ 2017-06-07 14:38 ` Marciniszyn, Mike
0 siblings, 0 replies; 3+ messages in thread
From: Marciniszyn, Mike @ 2017-06-07 14:38 UTC (permalink / raw)
To: lkp
Cc: kbuild-all-JC7UmRfGjtg@public.gmane.org,
stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
stable-commits-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> drivers/infiniband/hw/qib/qib_rc.c: In function 'qib_rc_rcv':
> >> drivers/infiniband/hw/qib/qib_rc.c:1960:4: error: implicit declaration of
> function 'qib_put_ss' [-Werror=implicit-function-declaration]
> qib_put_ss(&qp->r_sge);
> ^~~~~~~~~~
The patch is intended for stable kernels as noted in:
Cc: <stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> # 3.10.x,3.16.x,4.1.x,4.4.x
Mike
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-06-07 14:38 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-06 15:02 [PATCH] RDMA/qib: Fix MR reference count leak on write with immediate Mike Marciniszyn
2017-06-07 7:47 ` kbuild test robot
[not found] ` <201706071515.DptFcIHE%fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-06-07 14:38 ` Marciniszyn, Mike
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox