• Maíra Canal's avatar
    drm/vc4: Stop the active perfmon before being destroyed · 0b2ad4f6
    Maíra Canal authored
    Upon closing the file descriptor, the active performance monitor is not
    stopped. Although all perfmons are destroyed in `vc4_perfmon_close_file()`,
    the active performance monitor's pointer (`vc4->active_perfmon`) is still
    retained.
    
    If we open a new file descriptor and submit a few jobs with performance
    monitors, the driver will attempt to stop the active performance monitor
    using the stale pointer in `vc4->active_perfmon`. However, this pointer
    is no longer valid because the previous process has already terminated,
    and all performance monitors associated with it have been destroyed and
    freed.
    
    To fix this, when the active performance monitor belongs to a given
    process, explicitly stop it before destroying and freeing it.
    
    Cc: stable@vger.kernel.org # v4.17+
    Cc: Boris Brezillon <bbrezillon@kernel.org>
    Cc: Juan A. Suarez Romero <jasuarez@igalia.com>
    Fixes: 65101d8c ("drm/vc4: Expose performance counters to userspace")
    Signed-off-by: default avatarMaíra Canal <mcanal@igalia.com>
    Reviewed-by: default avatarJuan A. Suarez <jasuarez@igalia.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241004123817.890016-2-mcanal@igalia.com
    0b2ad4f6
vc4_perfmon.c 5.53 KB