diff --git a/components/fs/fs.c b/components/fs/fs.c index a06212a3..25f2a4d4 100644 --- a/components/fs/fs.c +++ b/components/fs/fs.c @@ -347,14 +347,15 @@ ssize_t read(int fd, void *buf, size_t nbyte) return recv(fd, buf, nbyte, 0); } #endif - if (g_fs->fsFops == NULL || g_fs->fsFops->Read == NULL) { - errno = ENOSYS; - return FS_FAILURE; - } if (g_fs == NULL) { errno = ENODEV; return FS_FAILURE; } + if (g_fs->fsFops == NULL || g_fs->fsFops->Read == NULL) { + errno = ENOSYS; + return FS_FAILURE; + } + return g_fs->fsFops->Read(fd, buf, nbyte); } diff --git a/components/shell/src/cmds/task_shellcmd.c b/components/shell/src/cmds/task_shellcmd.c index 53efaad2..08c7a1e8 100755 --- a/components/shell/src/cmds/task_shellcmd.c +++ b/components/shell/src/cmds/task_shellcmd.c @@ -89,7 +89,6 @@ LITE_OS_SEC_TEXT_MINOR STATIC VOID OsShellCmdTskInfoData(const LosTaskCB *allTas { const LosTaskCB *taskCB = NULL; UINT32 loop; - UINT32 semId; for (loop = 0; loop < g_taskMaxNum; ++loop) { taskCB = allTaskArray + loop; @@ -97,12 +96,10 @@ LITE_OS_SEC_TEXT_MINOR STATIC VOID OsShellCmdTskInfoData(const LosTaskCB *allTas continue; } - semId = OsGetSemID(taskCB); - PRINTK("%-23s%-20p0x%-5x", taskCB->taskName, taskCB->taskEntry, taskCB->taskID); PRINTK("%-11u%-13s0x%-11x 0x%-8x 0x%-10x ", taskCB->priority, OsShellCmdConvertTskStatus(taskCB->taskStatus), taskCB->stackSize, - taskCB->stackPointer, taskCB->topOfStack, semId); + taskCB->stackPointer, taskCB->topOfStack); PRINTK("\n"); } } diff --git a/components/shell/src/cmds/vfs_shellcmd.c b/components/shell/src/cmds/vfs_shellcmd.c index db2f7153..bfe025ea 100755 --- a/components/shell/src/cmds/vfs_shellcmd.c +++ b/components/shell/src/cmds/vfs_shellcmd.c @@ -276,6 +276,7 @@ int OsShellCmdCat(int argc, const char **argv) if (fd == -1) { ret = -1; + free(fullpath); return ret; } diff --git a/kal/posix/src/pthread_mutex.c b/kal/posix/src/pthread_mutex.c index fdd81eca..5c7b62da 100644 --- a/kal/posix/src/pthread_mutex.c +++ b/kal/posix/src/pthread_mutex.c @@ -38,6 +38,7 @@ #define OS_SYS_NS_PER_MSECOND 1000000 #define OS_SYS_NS_PER_SECOND 1000000000 +#define OS_UINT_MAX (~0U) static inline int MapError(UINT32 err) { @@ -99,8 +100,7 @@ int pthread_mutex_destroy(pthread_mutex_t *mutex) int pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *absTimeout) { UINT32 ret; - UINT32 timeout; - UINT64 timeoutNs; + INT64 timeoutMs; struct timespec curTime = {0}; if ((mutex->magic != _MUX_MAGIC) || (absTimeout->tv_nsec < 0) || (absTimeout->tv_nsec >= OS_SYS_NS_PER_SECOND)) { return EINVAL; @@ -115,12 +115,13 @@ int pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *absTi if (ret != LOS_OK) { return EINVAL; } - timeoutNs = (absTimeout->tv_sec - curTime.tv_sec) * OS_SYS_NS_PER_SECOND + (absTimeout->tv_nsec - curTime.tv_nsec); - if (timeoutNs <= 0) { - return ETIMEDOUT; + timeoutMs = (absTimeout->tv_sec - curTime.tv_sec) * OS_SYS_MS_PER_SECOND + + (absTimeout->tv_nsec - curTime.tv_nsec) / OS_SYS_NS_PER_MSECOND; + if (timeoutMs < 0 || timeoutMs >= OS_UINT_MAX) { + return EINVAL; } - timeout = (timeoutNs + (OS_SYS_NS_PER_MSECOND - 1)) / OS_SYS_NS_PER_MSECOND; - ret = LOS_MuxPend(mutex->handle, timeout); + + ret = LOS_MuxPend(mutex->handle, (UINT32)timeoutMs); return MapError(ret); }