diff options
author | Dave Airlie <airlied@redhat.com> | 2014-05-02 07:22:19 +0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-05-16 05:46:06 +0400 |
commit | ad222799bec32a2db99c12b4dfa5dc19a1f6eaac (patch) | |
tree | ae1110d8ff8d3d5692382385899fc5c5725104d7 /drivers/gpu/drm | |
parent | 444c9a08bf787e8236e132fab7eceeb2f065aa4c (diff) | |
download | linux-ad222799bec32a2db99c12b4dfa5dc19a1f6eaac.tar.xz |
drm: fix memory leak around mode_group (v2)
This mode group id_list was never being freed.
v2: take David's suggestion to free in minor_free.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/drm_stub.c | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index d8b7099abece..a3fe32439a5b 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -1378,6 +1378,12 @@ static int drm_mode_group_init(struct drm_device *dev, struct drm_mode_group *gr return 0; } +void drm_mode_group_destroy(struct drm_mode_group *group) +{ + kfree(group->id_list); + group->id_list = NULL; +} + /* * NOTE: Driver's shouldn't ever call drm_mode_group_init_legacy_group - it is * the drm core's responsibility to set up mode control groups. diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c index 1447b0ee3676..3727ac8bc310 100644 --- a/drivers/gpu/drm/drm_stub.c +++ b/drivers/gpu/drm/drm_stub.c @@ -294,6 +294,7 @@ static void drm_minor_free(struct drm_device *dev, unsigned int type) slot = drm_minor_get_slot(dev, type); if (*slot) { + drm_mode_group_destroy(&(*slot)->mode_group); kfree(*slot); *slot = NULL; } |