提交 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) ...@@ -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); 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. * is_sharepool_addr() - Check if a user memory address belongs to share pool.
* @addr: the userspace address to be checked. * @addr: the userspace address to be checked.
...@@ -2615,13 +2621,13 @@ bool is_sharepool_addr(unsigned long addr) ...@@ -2615,13 +2621,13 @@ bool is_sharepool_addr(unsigned long addr)
bool ret = false; bool ret = false;
if (sp_area_customized == false) if (sp_area_customized == false)
return addr >= MMAP_SHARE_POOL_START && return is_sp_normal_addr(addr);
addr < (MMAP_SHARE_POOL_16G_START + MMAP_SHARE_POOL_16G_SIZE);
spa = __find_sp_area(addr); spa = __find_sp_area(addr);
if (spa && spa->spg) if (spa && spa->spg)
ret = addr >= spa->spg->dvpp_va_start && ret = (addr >= spa->spg->dvpp_va_start &&
addr < (spa->spg->dvpp_va_start + spa->spg->dvpp_size); addr < spa->spg->dvpp_va_start + spa->spg->dvpp_size) ||
is_sp_normal_addr(addr);
__sp_area_drop(spa); __sp_area_drop(spa);
return ret; return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册