projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
8a5776a
)
drm/atomic: Unref duplicated drm_atomic_state in drm_atomic_helper_resume()
author
Jeffy Chen
<
[email protected]
>
Mon, 9 Oct 2017 06:46:41 +0000
(14:46 +0800)
committer
Maarten Lankhorst
<
[email protected]
>
Mon, 9 Oct 2017 12:26:45 +0000
(14:26 +0200)
Kmemleak reported memory leak after suspend and resume:
unreferenced object 0xffffffc0e31d8880 (size 128):
comm "bash", pid 181, jiffies
4294763583
(age 24.694s)
hex dump (first 32 bytes):
01 00 00 00 00 00 00 00 00 20 a2 eb c0 ff ff ff ......... ......
01 00 00 00 00 00 00 00 80 87 1d e3 c0 ff ff ff ................
backtrace:
[<
ffffffc00034bb64
>] __save_stack_trace+0x48/0x6c
[<
ffffffc00034c244
>] create_object+0x138/0x254
[<
ffffffc0009dd218
>] kmemleak_alloc+0x58/0x8c
[<
ffffffc000346de4
>] kmem_cache_alloc_trace+0x188/0x254
[<
ffffffc0005af4c0
>] drm_atomic_state_alloc+0x3c/0x88
[<
ffffffc000591f0c
>] drm_atomic_helper_duplicate_state+0x28/0x158
[<
ffffffc000592098
>] drm_atomic_helper_suspend+0x5c/0xf0
Problem here is that we are duplicating the drm_atomic_state in
drm_atomic_helper_suspend(), but not unreference it in the resume path.
Fixes: 1494276000db ("drm/atomic-helper: Implement subsystem-level suspend/resume")
Signed-off-by: Jeffy Chen <
[email protected]
>
Reviewed-by: Maarten Lankhorst <
[email protected]
>
Signed-off-by: Maarten Lankhorst <
[email protected]
>
Link:
https://patchwork.freedesktop.org/patch/msgid/
[email protected]
Fixes: 0853695c3ba4 ("drm: Add reference counting to drm_atomic_state")
Cc: <
[email protected]
> # v4.10+
(cherry picked from commit
6d281b1f79e194c02125da29ea77316810261ca8
)
drivers/gpu/drm/drm_atomic_helper.c
patch
|
blob
|
history
diff --git
a/drivers/gpu/drm/drm_atomic_helper.c
b/drivers/gpu/drm/drm_atomic_helper.c
index 4e53aae9a1fb19fc6710202188a53119c566aef7..0028591f3f959ced1ad520ee280fb481d7a52898 100644
(file)
--- a/
drivers/gpu/drm/drm_atomic_helper.c
+++ b/
drivers/gpu/drm/drm_atomic_helper.c
@@
-2960,6
+2960,7
@@
out:
drm_modeset_backoff(&ctx);
}
+ drm_atomic_state_put(state);
drm_modeset_drop_locks(&ctx);
drm_modeset_acquire_fini(&ctx);