Compare commits
8 Commits
weekly_202
...
weekly_202
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51428fb84a | ||
|
|
31da79ec80 | ||
|
|
88cfb3de9d | ||
|
|
4bb465f9af | ||
|
|
ef7610470c | ||
|
|
8b57198526 | ||
|
|
09bcabfaf6 | ||
|
|
75af9e28d9 |
@@ -61,7 +61,7 @@ static ssize_t MemMap(struct file *filep, LosVmMapRegion *region)
|
||||
VADDR_T vaddr = region->range.base;
|
||||
LosVmSpace *space = LOS_SpaceGet(vaddr);
|
||||
|
||||
if ((paddr >= SYS_MEM_BASE) && (paddr < SYS_MEM_END)) {
|
||||
if (((paddr + size) >= SYS_MEM_BASE) && (paddr < SYS_MEM_END)) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
@@ -157,7 +157,8 @@ typedef struct VmSpace {
|
||||
#define VM_MAP_REGION_FLAG_SHM (1<<16)
|
||||
#define VM_MAP_REGION_FLAG_FIXED (1<<17)
|
||||
#define VM_MAP_REGION_FLAG_FIXED_NOREPLACE (1<<18)
|
||||
#define VM_MAP_REGION_FLAG_INVALID (1<<19) /* indicates that flags are not specified */
|
||||
#define VM_MAP_REGION_FLAG_LITEIPC (1<<19)
|
||||
#define VM_MAP_REGION_FLAG_INVALID (1<<20) /* indicates that flags are not specified */
|
||||
|
||||
STATIC INLINE UINT32 OsCvtProtFlagsToRegionFlags(unsigned long prot, unsigned long flags)
|
||||
{
|
||||
|
||||
@@ -76,6 +76,8 @@ const CHAR *OsGetRegionNameOrFilePath(LosVmMapRegion *region)
|
||||
return "MMAP";
|
||||
} else if (region->regionFlags & VM_MAP_REGION_FLAG_SHM) {
|
||||
return "SHM";
|
||||
} else if (region->regionFlags & VM_MAP_REGION_FLAG_LITEIPC) {
|
||||
return "LITEIPC";
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -273,6 +273,8 @@ STATIC UINT32 OsInheritOldRegionName(UINT32 oldRegionFlags)
|
||||
vmFlags |= VM_MAP_REGION_FLAG_MMAP;
|
||||
} else if (oldRegionFlags & VM_MAP_REGION_FLAG_SHM) {
|
||||
vmFlags |= VM_MAP_REGION_FLAG_SHM;
|
||||
} else if (oldRegionFlags & VM_MAP_REGION_FLAG_LITEIPC) {
|
||||
vmFlags |= VM_MAP_REGION_FLAG_LITEIPC;
|
||||
}
|
||||
|
||||
return vmFlags;
|
||||
@@ -298,7 +300,9 @@ INT32 LOS_DoMprotect(VADDR_T vaddr, size_t len, unsigned long prot)
|
||||
goto OUT_MPROTECT;
|
||||
}
|
||||
|
||||
if ((region->regionFlags & VM_MAP_REGION_FLAG_VDSO) || (region->regionFlags & VM_MAP_REGION_FLAG_HEAP)) {
|
||||
if ((region->regionFlags & VM_MAP_REGION_FLAG_VDSO) ||
|
||||
(region->regionFlags & VM_MAP_REGION_FLAG_HEAP) ||
|
||||
(region->regionFlags & VM_MAP_REGION_FLAG_LITEIPC)) {
|
||||
ret = -EPERM;
|
||||
goto OUT_MPROTECT;
|
||||
}
|
||||
|
||||
@@ -278,7 +278,6 @@ static void DumpFaultLog(void)
|
||||
|
||||
static void DumpMemData(struct MemDumpParam *param)
|
||||
{
|
||||
PRINTK("\nDumpType: %d\n", param->type);
|
||||
PRINTK("Unsupported now!\n");
|
||||
}
|
||||
|
||||
|
||||
@@ -239,6 +239,7 @@ LITE_OS_SEC_TEXT STATIC int LiteIpcMmap(struct file *filep, LosVmMapRegion *regi
|
||||
goto ERROR_MAP_OUT;
|
||||
}
|
||||
ipcInfo->pool.poolSize = region->range.size;
|
||||
region->regionFlags |= VM_MAP_REGION_FLAG_LITEIPC;
|
||||
return 0;
|
||||
ERROR_MAP_OUT:
|
||||
LOS_VFree(ipcInfo->pool.kvaddr);
|
||||
@@ -757,7 +758,10 @@ LITE_OS_SEC_TEXT STATIC UINT32 HandlePtr(LosProcessCB *pcb, SpecialObj *obj, BOO
|
||||
obj->content.ptr.buff = (VOID *)GetIpcUserAddr(pcb, (INTPTR)buf);
|
||||
EnableIpcNodeFreeByUser(pcb, (VOID *)buf);
|
||||
} else {
|
||||
(VOID)LiteIpcNodeFree(pcb, (VOID *)GetIpcKernelAddr(pcb, (INTPTR)obj->content.ptr.buff));
|
||||
buf = (VOID *)GetIpcKernelAddr(pcb, (INTPTR)obj->content.ptr.buff);
|
||||
if (IsIpcNode(pcb, buf) == TRUE) {
|
||||
(VOID)LiteIpcNodeFree(pcb, buf);
|
||||
}
|
||||
}
|
||||
return LOS_OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user