lkml.org 
[lkml]   [2020]   [Aug]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 203/212] drm/vmwgfx: Fix two list_for_each loop exit tests
    Date
    From: Dan Carpenter <dan.carpenter@oracle.com>

    [ Upstream commit 4437c1152ce0e57ab8f401aa696ea6291cc07ab1 ]

    These if statements are supposed to be true if we ended the
    list_for_each_entry() loops without hitting a break statement but they
    don't work.

    In the first loop, we increment "i" after the "if (i == unit)" condition
    so we don't necessarily know that "i" is not equal to unit at the end of
    the loop.

    In the second loop we exit when mode is not pointing to a valid
    drm_display_mode struct so it doesn't make sense to check "mode->type".

    Fixes: a278724aa23c ("drm/vmwgfx: Implement fbdev on kms v2")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Roland Scheidegger <sroland@vmware.com>
    Signed-off-by: Roland Scheidegger <sroland@vmware.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
    index 33ca24ab983e1..39ac7566b705b 100644
    --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
    +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
    @@ -2109,7 +2109,7 @@ int vmw_kms_fbdev_init_data(struct vmw_private *dev_priv,
    ++i;
    }

    - if (i != unit) {
    + if (&con->head == &dev_priv->dev->mode_config.connector_list) {
    DRM_ERROR("Could not find initial display unit.\n");
    return -EINVAL;
    }
    @@ -2131,13 +2131,13 @@ int vmw_kms_fbdev_init_data(struct vmw_private *dev_priv,
    break;
    }

    - if (mode->type & DRM_MODE_TYPE_PREFERRED)
    - *p_mode = mode;
    - else {
    + if (&mode->head == &con->modes) {
    WARN_ONCE(true, "Could not find initial preferred mode.\n");
    *p_mode = list_first_entry(&con->modes,
    struct drm_display_mode,
    head);
    + } else {
    + *p_mode = mode;
    }

    return 0;
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-08-20 13:28    [W:5.356 / U:1.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site