diff --git a/fs/vfs/vnode.c b/fs/vfs/vnode.c index 9dd3a095030dacb85f6a0d1915a839b807e6fcfa..c5933a3324185c9d3488af2d292e0c9baf59d7d6 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 2edf4b563a3a34f917553e866be44ca83a265424..2b64fb57c871869cb714db1f543f00a5c2ce46e8 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 7d7a169a3592b0d885e8e99b51c4c3a34b691a1d..6685bdbd353bcdcdfe1d9ef6d3d7c20c30ca80cb 100644 --- a/kernel/extended/dynload/src/los_load_elf.c +++ b/kernel/extended/dynload/src/los_load_elf.c @@ -225,12 +225,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);