mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
drm/vmwgfx: Fix an invalid read
[ Upstream commit10a26e0d5f
] vmw_move assumed that buffers to be moved would always be vmw_buffer_object's but after introduction of new placement for mob pages that's no longer the case. The resulting invalid read didn't have any practical consequences because the memory isn't used unless the object actually is a vmw_buffer_object. Fix it by moving the cast to the spot where the results are used. Signed-off-by: Zack Rusin <zackr@vmware.com> Fixes:f6be23264b
("drm/vmwgfx: Introduce a new placement for MOB page tables") Reported-by: Chuck Lever III <chuck.lever@oracle.com> Reviewed-by: Martin Krastev <krastevm@vmware.com> Tested-by: Chuck Lever <chuck.lever@oracle.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220318174332.440068-2-zack@kde.org Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
4bbc9146ca
commit
8d62e3d506
1 changed files with 6 additions and 8 deletions
|
@ -859,22 +859,21 @@ void vmw_query_move_notify(struct ttm_buffer_object *bo,
|
|||
struct ttm_device *bdev = bo->bdev;
|
||||
struct vmw_private *dev_priv;
|
||||
|
||||
|
||||
dev_priv = container_of(bdev, struct vmw_private, bdev);
|
||||
|
||||
mutex_lock(&dev_priv->binding_mutex);
|
||||
|
||||
dx_query_mob = container_of(bo, struct vmw_buffer_object, base);
|
||||
if (!dx_query_mob || !dx_query_mob->dx_query_ctx) {
|
||||
mutex_unlock(&dev_priv->binding_mutex);
|
||||
return;
|
||||
}
|
||||
|
||||
/* If BO is being moved from MOB to system memory */
|
||||
if (new_mem->mem_type == TTM_PL_SYSTEM &&
|
||||
old_mem->mem_type == VMW_PL_MOB) {
|
||||
struct vmw_fence_obj *fence;
|
||||
|
||||
dx_query_mob = container_of(bo, struct vmw_buffer_object, base);
|
||||
if (!dx_query_mob || !dx_query_mob->dx_query_ctx) {
|
||||
mutex_unlock(&dev_priv->binding_mutex);
|
||||
return;
|
||||
}
|
||||
|
||||
(void) vmw_query_readback_all(dx_query_mob);
|
||||
mutex_unlock(&dev_priv->binding_mutex);
|
||||
|
||||
|
@ -888,7 +887,6 @@ void vmw_query_move_notify(struct ttm_buffer_object *bo,
|
|||
(void) ttm_bo_wait(bo, false, false);
|
||||
} else
|
||||
mutex_unlock(&dev_priv->binding_mutex);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue