diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 16 | 
1 files changed, 8 insertions, 8 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 22f9a65ca0fc..76d57bc7ac62 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -1434,14 +1434,14 @@ int amdgpu_vm_bo_map(struct amdgpu_device *adev,  	uint64_t eaddr;  	/* validate the parameters */ -	if (saddr & ~PAGE_MASK || offset & ~PAGE_MASK || -	    size == 0 || size & ~PAGE_MASK) +	if (saddr & ~PAGE_MASK || offset & ~PAGE_MASK || size & ~PAGE_MASK) +		return -EINVAL; +	if (saddr + size <= saddr || offset + size <= offset)  		return -EINVAL;  	/* make sure object fit at this offset */  	eaddr = saddr + size - 1; -	if (saddr >= eaddr || -	    (bo && offset + size > amdgpu_bo_size(bo)) || +	if ((bo && offset + size > amdgpu_bo_size(bo)) ||  	    (eaddr >= adev->vm_manager.max_pfn << AMDGPU_GPU_PAGE_SHIFT))  		return -EINVAL; @@ -1500,14 +1500,14 @@ int amdgpu_vm_bo_replace_map(struct amdgpu_device *adev,  	int r;  	/* validate the parameters */ -	if (saddr & ~PAGE_MASK || offset & ~PAGE_MASK || -	    size == 0 || size & ~PAGE_MASK) +	if (saddr & ~PAGE_MASK || offset & ~PAGE_MASK || size & ~PAGE_MASK) +		return -EINVAL; +	if (saddr + size <= saddr || offset + size <= offset)  		return -EINVAL;  	/* make sure object fit at this offset */  	eaddr = saddr + size - 1; -	if (saddr >= eaddr || -	    (bo && offset + size > amdgpu_bo_size(bo)) || +	if ((bo && offset + size > amdgpu_bo_size(bo)) ||  	    (eaddr >= adev->vm_manager.max_pfn << AMDGPU_GPU_PAGE_SHIFT))  		return -EINVAL; | 
