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.4/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c

    r28606 r31859  
    716716
    717717        num_sizes = 0;
    718         for (i = 0; i < DRM_VMW_MAX_SURFACE_FACES; ++i)
     718        for (i = 0; i < DRM_VMW_MAX_SURFACE_FACES; ++i) {
     719                if (req->mip_levels[i] > DRM_VMW_MAX_MIP_LEVELS)
     720                        return -EINVAL;
    719721                num_sizes += req->mip_levels[i];
    720 
    721         if (num_sizes > DRM_VMW_MAX_SURFACE_FACES *
    722             DRM_VMW_MAX_MIP_LEVELS)
     722        }
     723
     724        if (num_sizes > DRM_VMW_MAX_SURFACE_FACES * DRM_VMW_MAX_MIP_LEVELS ||
     725            num_sizes == 0)
    723726                return -EINVAL;
    724727
     
    905908        struct ttm_base_object *base;
    906909        int ret;
     910        bool require_exist = false;
    907911
    908912        if (handle_type == DRM_VMW_HANDLE_PRIME) {
     
    911915                        return ret;
    912916        } else {
    913                 if (unlikely(drm_is_render_client(file_priv))) {
    914                         DRM_ERROR("Render client refused legacy "
    915                                   "surface reference.\n");
    916                         return -EACCES;
    917                 }
     917                if (unlikely(drm_is_render_client(file_priv)))
     918                        require_exist = true;
     919
    918920                if (ACCESS_ONCE(vmw_fpriv(file_priv)->locked_master)) {
    919921                        DRM_ERROR("Locked master refused legacy "
     
    943945                /*
    944946                 * Make sure the surface creator has the same
    945                  * authenticating master.
     947                 * authenticating master, or is already registered with us.
    946948                 */
    947949                if (drm_is_primary_client(file_priv) &&
    948                     user_srf->master != file_priv->master) {
    949                         DRM_ERROR("Trying to reference surface outside of"
    950                                   " master domain.\n");
    951                         ret = -EACCES;
    952                         goto out_bad_resource;
    953                 }
    954 
    955                 ret = ttm_ref_object_add(tfile, base, TTM_REF_USAGE, NULL);
     950                    user_srf->master != file_priv->master)
     951                        require_exist = true;
     952
     953                ret = ttm_ref_object_add(tfile, base, TTM_REF_USAGE, NULL,
     954                                         require_exist);
    956955                if (unlikely(ret != 0)) {
    957956                        DRM_ERROR("Could not add a reference to a surface.\n");
Note: See TracChangeset for help on using the changeset viewer.