diff --git a/fs/vfs/vnode.c b/fs/vfs/vnode.c index 9dd3a095..c5933a33 100644 --- a/fs/vfs/vnode.c +++ b/fs/vfs/vnode.c @@ -434,7 +434,6 @@ int VnodeLookupAt(const char *path, struct Vnode **result, uint32_t flags, struc currentVnode->filePath[vnodePathLen] = 0; } } - return ret; OUT_FREE_PATH: if (normalizedPath) { diff --git a/kernel/base/include/los_process_pri.h b/kernel/base/include/los_process_pri.h index 2edf4b56..2b64fb57 100644 --- a/kernel/base/include/los_process_pri.h +++ b/kernel/base/include/los_process_pri.h @@ -121,7 +121,7 @@ typedef struct ProcessCB { TimerIdMap timerIdMap; #endif #ifdef LOSCFG_DRIVERS_TZDRIVER - struct file *execFile; /**< Exec bin of the process */ + struct Vnode *execVnode; /**< Exec bin of the process */ #endif mode_t umask; #ifdef LOSCFG_KERNEL_CPUP diff --git a/kernel/extended/dynload/src/los_load_elf.c b/kernel/extended/dynload/src/los_load_elf.c index b565a21b..dcd5d291 100644 --- a/kernel/extended/dynload/src/los_load_elf.c +++ b/kernel/extended/dynload/src/los_load_elf.c @@ -223,12 +223,14 @@ STATIC INT32 OsReadEhdr(const CHAR *fileName, ELFInfo *elfInfo, BOOL isExecFile) #ifdef LOSCFG_DRIVERS_TZDRIVER if (isExecFile) { - ret = fs_getfilep(GetAssociatedSystemFd(elfInfo->procfd), &OsCurrProcessGet()->execFile); + struct file *filep; + ret = fs_getfilep(GetAssociatedSystemFd(elfInfo->procfd), &filep); if (ret) { PRINT_ERR("%s[%d], Failed to get struct file %s!\n", __FUNCTION__, __LINE__, fileName); /* File will be closed by OsLoadELFFile */ return ret; } + OsCurrProcessGet()->execVnode = filep->f_vnode; } #endif ret = OsReadELFInfo(elfInfo->procfd, (UINT8 *)&elfInfo->elfEhdr, sizeof(LD_ELF_EHDR), 0);