From 205df75f156825aa52f90ea0ba8840fa772b150c Mon Sep 17 00:00:00 2001 From: zhushengle Date: Mon, 28 Nov 2022 14:41:42 +0800 Subject: [PATCH] =?UTF-8?q?fixed=208d980de=20from=20https://gitee.com/zhus?= =?UTF-8?q?hengle/kernel=5Fliteos=5Fa/pulls/1078=20fix:=20codecheck?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E6=B8=85=E9=9B=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.shell初始化异常流程double free 2.los_disk_init中冗余初始化 3.OsKProcessPmUsage 中OsUProcessPmUsage异常退出时,存在使用未初始化的变量 4.HiLogHeadInit异常推出后,存在使用未初始化的变量 5.api_shell.c 中存在冗余初始化 fix #I63H5G Signed-off-by: zhushengle Change-Id: If17d8ed1e6f2276e20fbce24b32de169bfd22e54 --- apps/shell/src/main.c | 18 ++++++++---------- drivers/block/disk/src/disk.c | 2 +- kernel/base/vm/los_vm_dump.c | 4 +--- kernel/extended/hilog/los_hilog.c | 10 ++-------- net/lwip-2.1/enhancement/src/api_shell.c | 10 +++------- 5 files changed, 15 insertions(+), 29 deletions(-) diff --git a/apps/shell/src/main.c b/apps/shell/src/main.c index d0ece20c..791d0dcb 100644 --- a/apps/shell/src/main.c +++ b/apps/shell/src/main.c @@ -49,7 +49,7 @@ ShellCB *OsGetShellCb() return g_shellCB; } -void ShellDeinit(ShellCB *shellCB) +static void ShellDeinit(ShellCB *shellCB) { (void)pthread_mutex_destroy(&shellCB->historyMutex); (void)pthread_mutex_destroy(&shellCB->keyMutex); @@ -65,27 +65,23 @@ static int OsShellCreateTask(ShellCB *shellCB) ret = sched_getparam(getpid(), ¶m); if (ret != SH_OK) { - goto OUT; + return ret; } param.sched_priority = SHELL_PROCESS_PRIORITY_INIT; ret = sched_setparam(getpid(), ¶m); if (ret != SH_OK) { - goto OUT; + return ret; } ret = ShellTaskInit(shellCB); if (ret != SH_OK) { - goto OUT; + return ret; } shellCB->shellEntryHandle = pthread_self(); return 0; - -OUT: - ShellDeinit(shellCB); - return ret; } static int DoShellExec(char **argv) @@ -148,7 +144,7 @@ int main(int argc, char **argv) shellCB = (ShellCB *)malloc(sizeof(ShellCB)); if (shellCB == NULL) { - goto ERR_OUT1; + return SH_NOK; } ret = memset_s(shellCB, sizeof(ShellCB), 0, sizeof(ShellCB)); if (ret != SH_OK) { @@ -176,7 +172,9 @@ int main(int argc, char **argv) g_shellCB = shellCB; ret = OsShellCreateTask(shellCB); if (ret != SH_OK) { - goto ERR_OUT3; + ShellDeinit(shellCB); + g_shellCB = NULL; + return ret; } ShellEntry(shellCB); diff --git a/drivers/block/disk/src/disk.c b/drivers/block/disk/src/disk.c index 6db419cb..60ecf2c2 100644 --- a/drivers/block/disk/src/disk.c +++ b/drivers/block/disk/src/disk.c @@ -1465,7 +1465,7 @@ INT32 los_disk_init(const CHAR *diskName, const struct block_operations *bops, ret = VnodeLookup(diskName, &blkDriver, 0); if (ret < 0) { VnodeDrop(); - ret = ENOENT; + PRINT_ERR("disk_init : %s, failed to find the vnode, ERRNO=%d\n", diskName, ret); goto DISK_FIND_ERROR; } struct block_operations *bops2 = (struct block_operations *)((struct drv_data *)blkDriver->data)->ops; diff --git a/kernel/base/vm/los_vm_dump.c b/kernel/base/vm/los_vm_dump.c index 43f62afa..f326ea12 100644 --- a/kernel/base/vm/los_vm_dump.c +++ b/kernel/base/vm/los_vm_dump.c @@ -146,7 +146,6 @@ UINT32 OsKProcessPmUsage(LosVmSpace *kSpace, UINT32 *actualPm) LosVmSpace *space = NULL; LOS_DL_LIST *spaceList = NULL; UINT32 UProcessUsed = 0; - UINT32 pmTmp; if (actualPm == NULL) { return 0; @@ -167,8 +166,7 @@ UINT32 OsKProcessPmUsage(LosVmSpace *kSpace, UINT32 *actualPm) if (space == LOS_GetKVmSpace()) { continue; } - (VOID)OsUProcessPmUsage(space, NULL, &pmTmp); - UProcessUsed += pmTmp; + UProcessUsed += OsUProcessPmUsage(space, NULL, NULL); } (VOID)LOS_MuxRelease(vmSpaceListMux); diff --git a/kernel/extended/hilog/los_hilog.c b/kernel/extended/hilog/los_hilog.c index 3758f9a2..8ad4eb27 100644 --- a/kernel/extended/hilog/los_hilog.c +++ b/kernel/extended/hilog/los_hilog.c @@ -233,14 +233,8 @@ static int HiLogWriteRingBuffer(unsigned char *buffer, size_t bufLen) static void HiLogHeadInit(struct HiLogEntry *header, size_t len) { - struct timespec now; - int ret; - - ret = clock_gettime(CLOCK_REALTIME, &now); - if (ret != 0) { - PRINTK("In %s line %d,clock_gettime fail\n", __FUNCTION__, __LINE__); - return; - } + struct timespec now = {0}; + (void)clock_gettime(CLOCK_REALTIME, &now); header->len = len; header->pid = LOS_GetCurrProcessID(); diff --git a/net/lwip-2.1/enhancement/src/api_shell.c b/net/lwip-2.1/enhancement/src/api_shell.c index 4d2487cb..044df974 100644 --- a/net/lwip-2.1/enhancement/src/api_shell.c +++ b/net/lwip-2.1/enhancement/src/api_shell.c @@ -2175,8 +2175,6 @@ u32_t osShellPing6(int argc, const char **argv) /* Setting the start time of the entire ping task for statistics */ (void)clock_gettime(CLOCK_MONOTONIC_RAW, &first); - nsent = 0; - for (nsent = 0; nsent < ping6_params.pingcount; nsent++) { /* capture the start tick to calculate rtt */ (void)clock_gettime(CLOCK_MONOTONIC_RAW, &start); @@ -3170,7 +3168,6 @@ void netstat_internal(void *ctx) } /* For listen PCBs */ - recvQlen = 0; sendQlen = 0; for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { @@ -3670,7 +3667,7 @@ u32_t netdebug_sock(int argc, const char **argv) int idx; u32_t ret = LOS_NOK; - if (argc == 2) { + if (argc == 2) { /* 2: Number of command parameters */ if (!strcmp("-i", argv[1])) { /* netdebug sock -i */ for (idx = 0; idx < (int)LWIP_CONFIG_NUM_SOCKETS; idx++) { @@ -3678,10 +3675,9 @@ u32_t netdebug_sock(int argc, const char **argv) } ret = LOS_OK; } - } else if (argc == 3) { + } else if (argc == 3) { /* 3: Number of command parameters */ if (!strcmp("-d", argv[1])) { - /* netdebug sock -d */ - idx = atoi(argv[2]); + idx = atoi(argv[2]); /* 2: netdebug sock -d */ if (idx >= 0) { debug_socket_info(idx, 1, 1); ret = LOS_OK; -- GitLab