diff --git a/kernel/extended/dynload/src/los_load_elf.c b/kernel/extended/dynload/src/los_load_elf.c index 574b7f08064453ee48006fc6e45813a984f2bfa5..03d83865f7b48d418ea96e969f5a8a4d7f50a9d6 100644 --- a/kernel/extended/dynload/src/los_load_elf.c +++ b/kernel/extended/dynload/src/los_load_elf.c @@ -544,8 +544,6 @@ STATIC INT32 OsLoadInterpBinary(ELFLoadInfo *loadInfo, UINTPTR *interpMapBase) PRINT_ERR("%s[%d]\n", __FUNCTION__, __LINE__); } - OsELFClose(loadInfo->interpInfo.procfd); - loadInfo->interpInfo.procfd = INVALID_FD; return ret; } @@ -939,6 +937,8 @@ STATIC INT32 OsLoadELFSegment(ELFLoadInfo *loadInfo) if (loadInfo->interpInfo.procfd != INVALID_FD) { ret = OsLoadInterpBinary(loadInfo, &interpMapBase); + OsELFClose(loadInfo->interpInfo.procfd); + loadInfo->interpInfo.procfd = INVALID_FD; if (ret != LOS_OK) { return ret; }