All of lore.kernel.org
 help / color / mirror / Atom feed
From: Monk Liu <Monk.Liu-5C7GfCeVMHo@public.gmane.org>
To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Cc: Monk Liu <Monk.Liu-5C7GfCeVMHo@public.gmane.org>
Subject: [PATCH] drm/ttm: fix ttm client driver (e.g. amdgpu) reload issue
Date: Wed, 5 Jun 2019 14:44:36 +0800	[thread overview]
Message-ID: <1559717076-25471-1-git-send-email-Monk.Liu@amd.com> (raw)

need to clear bo glob and mem glob during their release
otherwise their member value would be wrongly used in the
next glob init stage and lead to wild pointer access problems:

1) kobj.state_initialized is 1
2) ttm_bo_glob.bo_count isn't cleared and referenced via it
   on member "swap_lru" would hit out of bound array accessing
   bug

Signed-off-by: Monk Liu <Monk.Liu@amd.com>
---
 drivers/gpu/drm/ttm/ttm_bo.c     | 2 ++
 drivers/gpu/drm/ttm/ttm_memory.c | 8 ++++++++
 2 files changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index c7de667..6434eac 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -1604,6 +1604,8 @@ static void ttm_bo_global_kobj_release(struct kobject *kobj)
 		container_of(kobj, struct ttm_bo_global, kobj);
 
 	__free_page(glob->dummy_read_page);
+
+	memset(glob, 0, sizeof(*glob));
 }
 
 static void ttm_bo_global_release(void)
diff --git a/drivers/gpu/drm/ttm/ttm_memory.c b/drivers/gpu/drm/ttm/ttm_memory.c
index 8617958..7128bbf 100644
--- a/drivers/gpu/drm/ttm/ttm_memory.c
+++ b/drivers/gpu/drm/ttm/ttm_memory.c
@@ -229,9 +229,17 @@ static const struct sysfs_ops ttm_mem_global_ops = {
 	.store = &ttm_mem_global_store,
 };
 
+void ttm_mem_glob_kobj_release(struct kobject *kobj)
+{
+	struct ttm_mem_global *glob = container_of(kobj, struct ttm_mem_global, kobj);
+
+	memset(glob, 0, sizeof(*glob));
+}
+
 static struct kobj_type ttm_mem_glob_kobj_type = {
 	.sysfs_ops = &ttm_mem_global_ops,
 	.default_attrs = ttm_mem_global_attrs,
+	.release = ttm_mem_glob_kobj_release,
 };
 
 static bool ttm_zones_above_swap_target(struct ttm_mem_global *glob,
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

             reply	other threads:[~2019-06-05  6:44 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-05  6:44 Monk Liu [this message]
     [not found] ` <1559717076-25471-1-git-send-email-Monk.Liu-5C7GfCeVMHo@public.gmane.org>
2019-06-05  7:29   ` FW: [PATCH] drm/ttm: fix ttm client driver (e.g. amdgpu) reload issue Liu, Monk
     [not found]     ` <MN2PR12MB393308FE408E9E41EF0D615184160-rweVpJHSKTq/67K4VYF1uAdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2019-06-05 11:10       ` Koenig, Christian
     [not found]         ` <8dbf96e5-056f-b2bb-b0d3-9376b92b0140-5C7GfCeVMHo@public.gmane.org>
2019-06-05 14:44           ` Liu, Monk
     [not found]             ` <MN2PR12MB39334AC8143DDBC1AA7587E884160-rweVpJHSKTq/67K4VYF1uAdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2019-06-05 18:10               ` Koenig, Christian
     [not found]                 ` <bb88e890-84c4-5405-85c6-59f02d5a7a61-5C7GfCeVMHo@public.gmane.org>
2019-06-06 14:00                   ` Christian König
     [not found]                     ` <1ef221b9-f29e-cbd2-488a-d5d0b349e45f-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2019-06-06 15:15                       ` Deucher, Alexander
     [not found]                         ` <BN6PR12MB1809F73FCA1AC3CA8B91CD1AF7170-/b2+HYfkarSEx6ez0IUAagdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2019-06-07 10:13                           ` Liu, Monk

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=1559717076-25471-1-git-send-email-Monk.Liu@amd.com \
    --to=monk.liu-5c7gfcevmho@public.gmane.org \
    --cc=amd-gfx-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.