From: "Nautiyal, Ankit K" <ankit.k.nautiyal@intel.com>
To: Xin Xiong <xiongx18@fudan.edu.cn>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: Xin Tan <tanxin.ctf@gmail.com>,
"yuanxzhang@fudan.edu.cn" <yuanxzhang@fudan.edu.cn>,
Xiyu Yang <xiyuyang19@fudan.edu.cn>
Subject: Re: [PATCH] drm: fix drm_dp_mst_port refcount leaks in drm_dp_mst_allocate_vcpi
Date: Mon, 3 Aug 2020 16:53:52 +0530 [thread overview]
Message-ID: <b0825761-e33e-c7ad-6b8e-6852b540ca45@intel.com> (raw)
In-Reply-To: <20200719154545.GA41231@xin-virtual-machine>
[-- Attachment #1.1: Type: text/plain, Size: 2328 bytes --]
Hi Xin Xong,
I have seen insufficient vcpi ports issues with MST daisy chain. While
running the IGT tests on MST, some times the vcpi ports are all used up.
Due to this the atomic check fails and the flips start failing with ENOSPC.
<https://gitlab.freedesktop.org/drm/intel/-/issues/1255>
https://gitlab.freedesktop.org/drm/intel/-/issues/1255
I think this patch would be fixing this.
Regards,
Ankit
On 7/19/2020 9:15 PM, Xin Xiong wrote:
> drm_dp_mst_allocate_vcpi() invokes
> drm_dp_mst_topology_get_port_validated(), which increases the refcount
> of the "port".
>
> These reference counting issues take place in two exception handling
> paths separately. Either when “slots” is less than 0 or when
> drm_dp_init_vcpi() returns a negative value, the function forgets to
> reduce the refcnt increased drm_dp_mst_topology_get_port_validated(),
> which results in a refcount leak.
>
> Fix these issues by pulling up the error handling when "slots" is less
> than 0, and calling drm_dp_mst_topology_put_port() before termination
> when drm_dp_init_vcpi() returns a negative value.
>
> Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
> Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
> Signed-off-by: Xin Xiong <xiongx18@fudan.edu.cn>
> ---
> drivers/gpu/drm/drm_dp_mst_topology.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
> index 1e26b89628f9..97b48b531ec6 100644
> --- a/drivers/gpu/drm/drm_dp_mst_topology.c
> +++ b/drivers/gpu/drm/drm_dp_mst_topology.c
> @@ -4261,11 +4261,11 @@ bool drm_dp_mst_allocate_vcpi(struct drm_dp_mst_topology_mgr *mgr,
> {
> int ret;
>
> - port = drm_dp_mst_topology_get_port_validated(mgr, port);
> - if (!port)
> + if (slots < 0)
> return false;
>
> - if (slots < 0)
> + port = drm_dp_mst_topology_get_port_validated(mgr, port);
> + if (!port)
> return false;
>
> if (port->vcpi.vcpi > 0) {
> @@ -4281,6 +4281,7 @@ bool drm_dp_mst_allocate_vcpi(struct drm_dp_mst_topology_mgr *mgr,
> if (ret) {
> DRM_DEBUG_KMS("failed to init vcpi slots=%d max=63 ret=%d\n",
> DIV_ROUND_UP(pbn, mgr->pbn_div), ret);
> + drm_dp_mst_topology_put_port(port);
> goto out;
> }
> DRM_DEBUG_KMS("initing vcpi for pbn=%d slots=%d\n",
[-- Attachment #1.2: Type: text/html, Size: 3017 bytes --]
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-08-03 11:23 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-19 15:45 [PATCH] drm: fix drm_dp_mst_port refcount leaks in drm_dp_mst_allocate_vcpi Xin Xiong
2020-08-03 11:23 ` Nautiyal, Ankit K [this message]
2020-08-04 16:09 ` Lyude Paul
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=b0825761-e33e-c7ad-6b8e-6852b540ca45@intel.com \
--to=ankit.k.nautiyal@intel.com \
--cc=airlied@linux.ie \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=tanxin.ctf@gmail.com \
--cc=tzimmermann@suse.de \
--cc=xiongx18@fudan.edu.cn \
--cc=xiyuyang19@fudan.edu.cn \
--cc=yuanxzhang@fudan.edu.cn \
/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