• Lyude's avatar
    drm/fb_helper: Fix references to dev->mode_config.num_connector · e4eb16ab
    Lyude authored
    commit 255f0e7c upstream.
    
    During boot, MST hotplugs are generally expected (even if no physical
    hotplugging occurs) and result in DRM's connector topology changing.
    This means that using num_connector from the current mode configuration
    can lead to the number of connectors changing under us. This can lead to
    some nasty scenarios in fbcon:
    
    - We allocate an array to the size of dev->mode_config.num_connectors.
    - MST hotplug occurs, dev->mode_config.num_connectors gets incremented.
    - We try to loop through each element in the array using the new value
      of dev->mode_config.num_connectors, and end up going out of bounds
      since dev->mode_config.num_connectors is now larger then the array we
      allocated.
    
    fb_helper->connector_count however, will always remain consistent while
    we do a modeset in fb_helper.
    
    Note: This is just polish for 4.7, Dave Airlie's drm_connector
    refcounting fixed these bugs for real. But it's good enough duct-tape
    for stable kernel backporting, since backporting the refcounting
    changes is way too invasive.
    Signed-off-by: default avatarLyude <cpaul@redhat.com>
    [danvet: Clarify why we need this. Also remove the now unused "dev"
    local variable to appease gcc.]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/1463065021-18280-3-git-send-email-cpaul@redhat.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    e4eb16ab
drm_fb_helper.c 60 KB