From: Lyude Paul <lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Cc: Jerry Zuo <Jerry.Zuo-5C7GfCeVMHo@public.gmane.org>,
Daniel Vetter <daniel-/w4YWyX8dFk@public.gmane.org>,
David Airlie <airlied-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Harry Wentland <harry.wentland-5C7GfCeVMHo@public.gmane.org>,
Juston Li <juston.li-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Subject: [PATCH v2 10/16] drm/nouveau: Keep malloc references to MST ports
Date: Wed, 19 Dec 2018 19:19:54 -0500 [thread overview]
Message-ID: <20181220001959.12486-11-lyude@redhat.com> (raw)
In-Reply-To: <20181220001959.12486-1-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Now that we finally have a sane way to keep port allocations around, use
it to fix the potential unchecked ->port accesses that nouveau makes by
making sure we keep the mst port allocated for as long as it's
drm_connector is accessible.
Additionally, now that we've guaranteed that mstc->port is allocated for
as long as we keep mstc around we can remove the connector registration
checks for codepaths which release payloads, allowing us to release
payloads on active topologies properly. These registration checks were
only required before in order to avoid situations where mstc->port could
technically be pointing at freed memory.
Signed-off-by: Lyude Paul <lyude@redhat.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: David Airlie <airlied@redhat.com>
Cc: Jerry Zuo <Jerry.Zuo@amd.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Juston Li <juston.li@intel.com>
---
drivers/gpu/drm/nouveau/dispnv50/disp.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
index 0f7d72518604..982054bbcc8b 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
@@ -964,7 +964,11 @@ static void
nv50_mstc_destroy(struct drm_connector *connector)
{
struct nv50_mstc *mstc = nv50_mstc(connector);
+
drm_connector_cleanup(&mstc->connector);
+ if (mstc->port)
+ drm_dp_mst_put_port_malloc(mstc->port);
+
kfree(mstc);
}
@@ -1012,6 +1016,7 @@ nv50_mstc_new(struct nv50_mstm *mstm, struct drm_dp_mst_port *port,
drm_object_attach_property(&mstc->connector.base, dev->mode_config.path_property, 0);
drm_object_attach_property(&mstc->connector.base, dev->mode_config.tile_property, 0);
drm_connector_set_path_property(&mstc->connector, path);
+ drm_dp_mst_get_port_malloc(port);
return 0;
}
@@ -1077,6 +1082,7 @@ nv50_mstm_destroy_connector(struct drm_dp_mst_topology_mgr *mgr,
drm_fb_helper_remove_one_connector(&drm->fbcon->helper, &mstc->connector);
drm_modeset_lock(&drm->dev->mode_config.connection_mutex, NULL);
+ drm_dp_mst_put_port_malloc(mstc->port);
mstc->port = NULL;
drm_modeset_unlock(&drm->dev->mode_config.connection_mutex);
--
2.19.2
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau
next prev parent reply other threads:[~2018-12-20 0:19 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-20 0:19 [PATCH v2 00/16] MST refcounting/atomic helpers cleanup Lyude Paul
2018-12-20 0:19 ` [PATCH v2 01/16] drm/dp_mst: Rename drm_dp_mst_get_validated_(port|mstb)_ref and friends Lyude Paul
[not found] ` <20181220001959.12486-2-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-12-20 9:09 ` Daniel Vetter
2018-12-20 0:19 ` [PATCH v2 02/16] drm/dp_mst: Introduce new refcounting scheme for mstbs and ports Lyude Paul
2018-12-20 0:19 ` [PATCH v2 06/16] drm/i915: Keep malloc references to MST ports Lyude Paul
[not found] ` <20181220001959.12486-7-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-12-20 9:10 ` Daniel Vetter
[not found] ` <20181220001959.12486-1-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-12-20 0:19 ` [PATCH v2 03/16] drm/dp_mst: Restart last_connected_port_and_mstb() if topology ref fails Lyude Paul
[not found] ` <20181220001959.12486-4-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2019-01-08 19:16 ` Wentland, Harry
2018-12-20 0:19 ` [PATCH v2 04/16] drm/dp_mst: Stop releasing VCPI when removing ports from topology Lyude Paul
2019-01-08 19:27 ` Wentland, Harry
2018-12-20 0:19 ` [PATCH v2 05/16] drm/dp_mst: Fix payload deallocation on hotplugs using malloc refs Lyude Paul
2019-01-08 19:27 ` Wentland, Harry
2018-12-20 0:19 ` [PATCH v2 07/16] drm/amdgpu/display: Keep malloc ref to MST port Lyude Paul
[not found] ` <20181220001959.12486-8-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2019-01-08 19:38 ` Wentland, Harry
2018-12-20 0:19 ` [PATCH v2 08/16] drm/nouveau: Remove bogus cleanup in nv50_mstm_add_connector() Lyude Paul
2018-12-20 0:19 ` Lyude Paul [this message]
2018-12-20 0:19 ` [PATCH v2 11/16] drm/nouveau: Stop unsetting mstc->port, use malloc refs Lyude Paul
2018-12-20 0:19 ` [PATCH v2 14/16] drm/dp_mst: Start tracking per-port VCPI allocations Lyude Paul
2018-12-20 0:19 ` [PATCH v2 15/16] drm/dp_mst: Check payload count in drm_dp_mst_atomic_check() Lyude Paul
2018-12-20 0:19 ` [PATCH v2 09/16] drm/nouveau: Remove unnecessary VCPI checks in nv50_msto_cleanup() Lyude Paul
2018-12-20 0:19 ` [PATCH v2 12/16] drm/nouveau: Grab payload lock in nv50_msto_payload() Lyude Paul
2018-12-20 0:19 ` [PATCH v2 13/16] drm/dp_mst: Add some atomic state iterator macros Lyude Paul
2018-12-20 0:20 ` [PATCH v2 16/16] drm/nouveau: Use atomic VCPI helpers for MST Lyude Paul
2018-12-20 0:39 ` ✗ Fi.CI.CHECKPATCH: warning for MST refcounting/atomic helpers cleanup (rev2) Patchwork
2018-12-20 0:43 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-12-20 0:57 ` ✗ Fi.CI.BAT: failure " Patchwork
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=20181220001959.12486-11-lyude@redhat.com \
--to=lyude-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=Jerry.Zuo-5C7GfCeVMHo@public.gmane.org \
--cc=airlied-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=daniel-/w4YWyX8dFk@public.gmane.org \
--cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=harry.wentland-5C7GfCeVMHo@public.gmane.org \
--cc=intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=juston.li-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@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