diff options
author | Christian König <christian.koenig@amd.com> | 2019-04-16 11:49:17 +0200 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2019-04-19 11:11:20 -0500 |
commit | bd4264112f93045704731850c5e4d85db981cd85 (patch) | |
tree | f14d540c09f52d5f3d629af72b5b11e5f7fd7f42 /drivers/gpu/drm/ttm/ttm_memory.c | |
parent | 00fd14ff3017f64a9a03a08291e4be0d87bedc17 (diff) | |
download | linux-bd4264112f93045704731850c5e4d85db981cd85.tar.gz linux-bd4264112f93045704731850c5e4d85db981cd85.tar.bz2 linux-bd4264112f93045704731850c5e4d85db981cd85.zip |
drm/ttm: fix re-init of global structures
When a driver unloads without unloading TTM we don't correctly
clear the global structures leading to errors on re-init.
Next step should probably be to remove the global structures and
kobjs all together, but this is tricky since we need to maintain
backward compatibility.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Tested-by: Karol Herbst <kherbst@redhat.com>
CC: stable@vger.kernel.org # 5.0.x
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/ttm/ttm_memory.c')
-rw-r--r-- | drivers/gpu/drm/ttm/ttm_memory.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_memory.c b/drivers/gpu/drm/ttm/ttm_memory.c index f1567c353b54..9a0909decb36 100644 --- a/drivers/gpu/drm/ttm/ttm_memory.c +++ b/drivers/gpu/drm/ttm/ttm_memory.c @@ -461,8 +461,8 @@ out_no_zone: void ttm_mem_global_release(struct ttm_mem_global *glob) { - unsigned int i; struct ttm_mem_zone *zone; + unsigned int i; /* let the page allocator first stop the shrink work. */ ttm_page_alloc_fini(); @@ -475,9 +475,10 @@ void ttm_mem_global_release(struct ttm_mem_global *glob) zone = glob->zones[i]; kobject_del(&zone->kobj); kobject_put(&zone->kobj); - } + } kobject_del(&glob->kobj); kobject_put(&glob->kobj); + memset(glob, 0, sizeof(*glob)); } static void ttm_check_swapping(struct ttm_mem_global *glob) |