Ignore:
Timestamp:
Apr 14, 2017, 9:41:36 PM (11 days ago)
Author:
brainslayer
Message:

kernel update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-4.9/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c

    r31574 r31859  
    714714
    715715        num_sizes = 0;
    716         for (i = 0; i < DRM_VMW_MAX_SURFACE_FACES; ++i)
     716        for (i = 0; i < DRM_VMW_MAX_SURFACE_FACES; ++i) {
     717                if (req->mip_levels[i] > DRM_VMW_MAX_MIP_LEVELS)
     718                        return -EINVAL;
    717719                num_sizes += req->mip_levels[i];
    718 
    719         if (num_sizes > DRM_VMW_MAX_SURFACE_FACES *
    720             DRM_VMW_MAX_MIP_LEVELS)
     720        }
     721
     722        if (num_sizes > DRM_VMW_MAX_SURFACE_FACES * DRM_VMW_MAX_MIP_LEVELS ||
     723            num_sizes == 0)
    721724                return -EINVAL;
    722725
     
    892895        struct ttm_base_object *base;
    893896        int ret;
     897        bool require_exist = false;
    894898
    895899        if (handle_type == DRM_VMW_HANDLE_PRIME) {
     
    898902                        return ret;
    899903        } else {
    900                 if (unlikely(drm_is_render_client(file_priv))) {
    901                         DRM_ERROR("Render client refused legacy "
    902                                   "surface reference.\n");
    903                         return -EACCES;
    904                 }
     904                if (unlikely(drm_is_render_client(file_priv)))
     905                        require_exist = true;
     906
    905907                if (ACCESS_ONCE(vmw_fpriv(file_priv)->locked_master)) {
    906908                        DRM_ERROR("Locked master refused legacy "
     
    930932                /*
    931933                 * Make sure the surface creator has the same
    932                  * authenticating master.
     934                 * authenticating master, or is already registered with us.
    933935                 */
    934936                if (drm_is_primary_client(file_priv) &&
    935                     user_srf->master != file_priv->master) {
    936                         DRM_ERROR("Trying to reference surface outside of"
    937                                   " master domain.\n");
    938                         ret = -EACCES;
    939                         goto out_bad_resource;
    940                 }
    941 
    942                 ret = ttm_ref_object_add(tfile, base, TTM_REF_USAGE, NULL);
     937                    user_srf->master != file_priv->master)
     938                        require_exist = true;
     939
     940                ret = ttm_ref_object_add(tfile, base, TTM_REF_USAGE, NULL,
     941                                         require_exist);
    943942                if (unlikely(ret != 0)) {
    944943                        DRM_ERROR("Could not add a reference to a surface.\n");
Note: See TracChangeset for help on using the changeset viewer.