• Darren Salt's avatar
    drm/amd/display: Don't leak dc_stream_state. · 9635b754
    Darren Salt authored
    Noticed while playing “Valley”, which was causing some 8MB of leakage per
    second. kmemleak listed many entries looking like this:
    
        unreferenced object 0xffff8802c2951800 (size 1024):
          comm "Xorg", pid 2982, jiffies 4297410155 (age 392.787s)
          hex dump (first 32 bytes):
            00 50 f9 0c 04 88 ff ff 98 08 00 00 00 00 00 00  .P..............
            80 07 00 00 00 00 00 00 58 00 00 00 2c 00 00 00  ........X...,...
          backtrace:
            [<ffffffff810cd4c3>] create_object+0x13c/0x261
            [<ffffffff815abdc2>] kmemleak_alloc+0x20/0x3c
            [<ffffffff810cad1d>] slab_post_alloc_hook+0x42/0x52
            [<ffffffff810cb8e0>] kmem_cache_alloc+0x67/0x76
            [<ffffffff813bbb54>] dc_create_stream_for_sink+0x24/0x1cf
            [<ffffffff81373aaa>] create_stream_for_sink+0x6f/0x295
            [<ffffffff81373dc2>] dm_update_crtcs_state+0xa6/0x268
            [<ffffffff8137401e>] amdgpu_dm_atomic_check+0x9a/0x314
            [<ffffffff812ac3dd>] drm_atomic_check_only+0x17a/0x42d
            [<ffffffff812ac6a3>] drm_atomic_commit+0x13/0x4b
            [<ffffffff812ad1a5>] drm_atomic_connector_commit_dpms+0xcb/0xe8
            [<ffffffff812b1238>] drm_mode_obj_set_property_ioctl+0xe6/0x1e3
            [<ffffffff812b027b>] drm_mode_connector_property_set_ioctl+0x2b/0x2d
            [<ffffffff8129f427>] drm_ioctl_kernel+0x64/0x9d
            [<ffffffff8129f6a2>] drm_ioctl+0x230/0x316
            [<ffffffff812ca4d3>] amdgpu_drm_ioctl+0x4b/0x7d
    
    v2: also handle break statements.
    Signed-off-by: default avatarDarren Salt <devspam@moreofthesa.me.uk>
    Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    9635b754
amdgpu_dm.c 127 KB