lkml.org 
[lkml]   [2014]   [Nov]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.13 086/162] qxl: don't create too large primary surface
    Date
    3.13.11.11 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@gmail.com>

    commit c572aaf46f71f63ae5914d4e194a955e0ba1b519 upstream.

    Limit primary to qemu vgamem size, to avoid reaching
    qemu guest bug "requested primary larger than framebuffer"
    on resizing screen too large to fit.

    Remove unneeded and misleading variables.

    Related to:
    https://bugzilla.redhat.com/show_bug.cgi?id=1127552

    Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    drivers/gpu/drm/qxl/qxl_display.c | 16 ++++++++--------
    1 file changed, 8 insertions(+), 8 deletions(-)

    diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
    index d70aafb..fb71c10 100644
    --- a/drivers/gpu/drm/qxl/qxl_display.c
    +++ b/drivers/gpu/drm/qxl/qxl_display.c
    @@ -516,7 +516,6 @@ static int qxl_crtc_mode_set(struct drm_crtc *crtc,
    struct qxl_framebuffer *qfb;
    struct qxl_bo *bo, *old_bo = NULL;
    struct qxl_crtc *qcrtc = to_qxl_crtc(crtc);
    - uint32_t width, height, base_offset;
    bool recreate_primary = false;
    int ret;
    int surf_id;
    @@ -546,9 +545,10 @@ static int qxl_crtc_mode_set(struct drm_crtc *crtc,
    if (qcrtc->index == 0)
    recreate_primary = true;

    - width = mode->hdisplay;
    - height = mode->vdisplay;
    - base_offset = 0;
    + if (bo->surf.stride * bo->surf.height > qdev->vram_size) {
    + DRM_ERROR("Mode doesn't fit in vram size (vgamem)");
    + return -EINVAL;
    + }

    ret = qxl_bo_reserve(bo, false);
    if (ret != 0)
    @@ -562,10 +562,10 @@ static int qxl_crtc_mode_set(struct drm_crtc *crtc,
    if (recreate_primary) {
    qxl_io_destroy_primary(qdev);
    qxl_io_log(qdev,
    - "recreate primary: %dx%d (was %dx%d,%d,%d)\n",
    - width, height, bo->surf.width,
    - bo->surf.height, bo->surf.stride, bo->surf.format);
    - qxl_io_create_primary(qdev, base_offset, bo);
    + "recreate primary: %dx%d,%d,%d\n",
    + bo->surf.width, bo->surf.height,
    + bo->surf.stride, bo->surf.format);
    + qxl_io_create_primary(qdev, 0, bo);
    bo->is_primary = true;
    surf_id = 0;
    } else {
    --
    1.9.1
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2014-11-07 00:21    [W:5.681 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site