From: Sagi Grimberg <sagig-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
To: "Sébastien Dugué" <sebastien.dugue-BUmcmmAb0Fc@public.gmane.org>,
linux-rdma <linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"Roland Dreier" <roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: Vladimir Sokolovsky <vlad-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: Re: [PATCH] ib_uverbs: Fix pages leak when using XRC SRQs
Date: Tue, 14 Apr 2015 14:24:22 +0300 [thread overview]
Message-ID: <552CF8E6.4030300@dev.mellanox.co.il> (raw)
In-Reply-To: <20150407132224.5f201e40@dingo>
On 4/7/2015 2:22 PM, Sébastien Dugué wrote:
>
> Hello,
>
> When an application using XRCs abruptly terminates, the mmaped pages
> of the CQ buffers are leaked.
>
> This comes from the fact that when resources are released in
> ib_uverbs_cleanup_ucontext(), we fail to release the CQs because their
> refcount is not 0.
>
> When creating an XRC SRQ, we increment the associated CQ refcount.
> This refcount is only decremented when the SRQ is released.
>
> Therefore we need to release the SRQs prior to the CQs to make sure
> that all references to the CQs are gone before trying to release these.
>
> Signed-off-by: Sebastien Dugue <sebastien.dugue-6ktuUTfB/bM@public.gmane.org>
> ---
> drivers/infiniband/core/uverbs_main.c | 22 +++++++++++-----------
> 1 file changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
> index 259dcc7..88cce9b 100644
> --- a/drivers/infiniband/core/uverbs_main.c
> +++ b/drivers/infiniband/core/uverbs_main.c
> @@ -246,6 +246,17 @@ static int ib_uverbs_cleanup_ucontext(struct ib_uverbs_file *file,
> kfree(uqp);
> }
>
> + list_for_each_entry_safe(uobj, tmp, &context->srq_list, list) {
> + struct ib_srq *srq = uobj->object;
> + struct ib_uevent_object *uevent =
> + container_of(uobj, struct ib_uevent_object, uobject);
> +
> + idr_remove_uobj(&ib_uverbs_srq_idr, uobj);
> + ib_destroy_srq(srq);
> + ib_uverbs_release_uevent(file, uevent);
> + kfree(uevent);
> + }
> +
> list_for_each_entry_safe(uobj, tmp, &context->cq_list, list) {
> struct ib_cq *cq = uobj->object;
> struct ib_uverbs_event_file *ev_file = cq->cq_context;
> @@ -258,17 +269,6 @@ static int ib_uverbs_cleanup_ucontext(struct ib_uverbs_file *file,
> kfree(ucq);
> }
>
> - list_for_each_entry_safe(uobj, tmp, &context->srq_list, list) {
> - struct ib_srq *srq = uobj->object;
> - struct ib_uevent_object *uevent =
> - container_of(uobj, struct ib_uevent_object, uobject);
> -
> - idr_remove_uobj(&ib_uverbs_srq_idr, uobj);
> - ib_destroy_srq(srq);
> - ib_uverbs_release_uevent(file, uevent);
> - kfree(uevent);
> - }
> -
> list_for_each_entry_safe(uobj, tmp, &context->mr_list, list) {
> struct ib_mr *mr = uobj->object;
>
>
Nice catch,
Reviewed-by: Sagi Grimberg <sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
--
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
next prev parent reply other threads:[~2015-04-14 11:24 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-07 11:22 [PATCH] ib_uverbs: Fix pages leak when using XRC SRQs Sébastien Dugué
2015-04-14 11:24 ` Sagi Grimberg [this message]
-- strict thread matches above, loose matches on Subject: below --
2015-04-09 9:13 Sébastien Dugué
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=552CF8E6.4030300@dev.mellanox.co.il \
--to=sagig-ldsdmyg8hgv8yrgs2mwiifqbs+8scbdb@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=sebastien.dugue-BUmcmmAb0Fc@public.gmane.org \
--cc=vlad-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).