提交 cc18ead6 编写于 作者: T Tang Yizhou 提交者: Yang Yingliang

share_pool: Fix address checker

ascend inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I4EUVI
CVE: NA

-------------------------------------------------

Address range [MMAP_SHARE_POOL_START, MMAP_SHARE_POOL_16G_START) and
[MMAP_SHARE_POOL_16G_START, MMAP_SHARE_POOL_16G_START +
MMAP_SHARE_POOL_16G_SIZE) is always valid.
Signed-off-by: NPeng Wu <wupeng58@huawei.com>
Signed-off-by: NTang Yizhou <tangyizhou@huawei.com>
Reviewed-by: NDing Tianhong <dingtianhong@huawei.com>
Reviewed-by: NKefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
Reviewed-by: NWeilong Chen <chenweilong@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 12fba722
......@@ -2603,6 +2603,12 @@ bool sp_config_dvpp_range(size_t start, size_t size, int device_id, int pid)
}
EXPORT_SYMBOL_GPL(sp_config_dvpp_range);
static bool is_sp_normal_addr(unsigned long addr)
{
return addr >= MMAP_SHARE_POOL_START &&
addr < MMAP_SHARE_POOL_16G_START + MMAP_SHARE_POOL_16G_SIZE;
}
/**
* is_sharepool_addr() - Check if a user memory address belongs to share pool.
* @addr: the userspace address to be checked.
......@@ -2615,13 +2621,13 @@ bool is_sharepool_addr(unsigned long addr)
bool ret = false;
if (sp_area_customized == false)
return addr >= MMAP_SHARE_POOL_START &&
addr < (MMAP_SHARE_POOL_16G_START + MMAP_SHARE_POOL_16G_SIZE);
return is_sp_normal_addr(addr);
spa = __find_sp_area(addr);
if (spa && spa->spg)
ret = addr >= spa->spg->dvpp_va_start &&
addr < (spa->spg->dvpp_va_start + spa->spg->dvpp_size);
ret = (addr >= spa->spg->dvpp_va_start &&
addr < spa->spg->dvpp_va_start + spa->spg->dvpp_size) ||
is_sp_normal_addr(addr);
__sp_area_drop(spa);
return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册