Merge "msm: kgsl: Prevent wrap around during user address mapping" into kernel.lnx.5.4.r1-rel

This commit is contained in:
Linux Build Service Account 2023-10-09 01:28:52 -07:00 • committed by Gerrit - the friendly Code Review server
commit 5f3f5f8ef9

View file

@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2011-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
*/
#include <linux/bitfield.h>
@ -2157,14 +2158,18 @@ static uint64_t kgsl_iommu_find_svm_region(struct kgsl_pagetable *pagetable,
static bool iommu_addr_in_svm_ranges(struct kgsl_iommu_pt *pt,
u64 gpuaddr, u64 size)
{
u64 end = gpuaddr + size;
/* Make sure size is not zero and we don't wrap around */
if (end <= gpuaddr)
return false;
if ((gpuaddr >= pt->compat_va_start && gpuaddr < pt->compat_va_end) &&
((gpuaddr + size) > pt->compat_va_start &&
(gpuaddr + size) <= pt->compat_va_end))
(end > pt->compat_va_start && end <= pt->compat_va_end))
return true;
if ((gpuaddr >= pt->svm_start && gpuaddr < pt->svm_end) &&
((gpuaddr + size) > pt->svm_start &&
(gpuaddr + size) <= pt->svm_end))
(end > pt->svm_start && end <= pt->svm_end))
return true;
return false;