From 2f3389d39daeecc179cffee26a6c8e890e869d77 Mon Sep 17 00:00:00 2001 From: hw_llm Date: Mon, 30 Dec 2024 21:43:44 +0800 Subject: [PATCH] =?UTF-8?q?Description:=20mem=20=E6=BA=A2=E5=87=BA=20?= =?UTF-8?q?=E6=BC=8F=E6=B4=9E=E4=BF=AE=E6=94=B9=20IssueNo:=20https://gitee?= =?UTF-8?q?.com/openharmony/kernel=5Fliteos=5Fa/issues/IBERYF=3Ffrom=3Dpro?= =?UTF-8?q?ject-issue=20Feature=20Or=20Bugfix:=20Bugfix=20Binary=20Source:?= =?UTF-8?q?=20No=20Signed-off-by:=20hw=5Fllm=20=20?= =?UTF-8?q?=EF=BC=88cherry=20picked=20commit=20from=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- drivers/char/mem/src/mem.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/char/mem/src/mem.c b/drivers/char/mem/src/mem.c index ea6fbb7e..23964b69 100644 --- a/drivers/char/mem/src/mem.c +++ b/drivers/char/mem/src/mem.c @@ -60,8 +60,15 @@ static ssize_t MemMap(struct file *filep, LosVmMapRegion *region) PADDR_T paddr = region->pgOff << PAGE_SHIFT; VADDR_T vaddr = region->range.base; LosVmSpace *space = LOS_SpaceGet(vaddr); - - if (((paddr + size) >= SYS_MEM_BASE) && (paddr < SYS_MEM_END)) { + PADDR_T paddrEnd = paddr + size; + /* + * Only the following two conditions are valid: + * [paddr, paddrEnd] < [SYS_MEM_BASE, SYS_MEM_END] + * or + * [SYS_MEM_BASE, SYS_MEM_END] < [paddr, paddrEnd] + * otherwise is invalid + */ + if (!((paddrEnd > paddr) && ((paddrEnd < SYS_MEM_BASE) || (paddr >= SYS_MEM_END)))) { return -EINVAL; } -- Gitee