• Stefan Christ's avatar
    drm/fb-helper: fix segfaults in drm_fb_helper_debug_* · 1b99b724
    Stefan Christ authored
    A drm driver that is implementing
    
          fb_debug_enter and fb_debug_leave
    
    in struct fb_ops with drm fb helper functions
    
         drm_fb_helper_debug_enter and drm_fb_helper_debug_leave
    
    must also implement the callback 'mode_set_base_atomic' in struct
    drm_crtc_helper_funcs. See Documentation/DocBook/kgdb.tmpl.  The current
    implementation will segfault when 'mode_set_base_atomic' is a NULL
    pointer.
    
    Before this patch at least the drm drivers armada, ast, qxl, udl and
    virtio do not have a 'mode_set_base_atomic' implementation but using
    drm_fb_helper_debug_(enter|leave). So these drivers may segfault when
    callbacks fb_debug_(enter|leave) are called.
    
    Avoid the issue by just checking for NULL pointers. So all drivers can
    unconditionally implement fb_debug_(enter|leave) with the drm_fb_helper
    functions. If callback 'mode_set_base_atomic' is not implemented, the
    code in drm_fb_helper_debug_(enter|leave) does effectively nothing.
    Signed-off-by: default avatarStefan Christ <contact@stefanchrist.eu>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/1479078208-25221-2-git-send-email-contact@stefanchrist.eu
    1b99b724
drm_fb_helper.c 64.6 KB