From 4e94e0bb772703385d7ebbdcac08336cb8a85135 Mon Sep 17 00:00:00 2001 From: Mupceet Date: Fri, 29 Jul 2022 15:11:29 +0800 Subject: [PATCH] add mutex for workspace Signed-off-by: Mupceet --- services/param/adapter/param_dac.c | 2 +- services/param/linux/param_osadp.c | 14 ++++++++++++++ services/param/linux/param_request.c | 2 -- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/services/param/adapter/param_dac.c b/services/param/adapter/param_dac.c index da7ff6a11..ef46e1d26 100644 --- a/services/param/adapter/param_dac.c +++ b/services/param/adapter/param_dac.c @@ -211,7 +211,7 @@ static int CheckFilePermission(const ParamSecurityLabel *localLabel, const char static int CheckUserInGroup(WorkSpace *space, gid_t groupId, uid_t uid) { #ifdef __MUSL__ - static char buffer[USER_BUFFER_LEN] = {0}; + char buffer[USER_BUFFER_LEN] = {0}; uint32_t labelIndex = 0; int ret = ParamSprintf(buffer, sizeof(buffer), "%s.%d.%d", GROUP_FORMAT, groupId, uid); PARAM_CHECK(ret >= 0, return -1, "Failed to format name for %s.%d.%d", GROUP_FORMAT, groupId, uid); diff --git a/services/param/linux/param_osadp.c b/services/param/linux/param_osadp.c index 3b71cfaee..972bbc9df 100644 --- a/services/param/linux/param_osadp.c +++ b/services/param/linux/param_osadp.c @@ -29,23 +29,37 @@ void paramMutexEnvInit(void) int ParamRWMutexCreate(ParamRWMutex *lock) { + PARAM_CHECK(lock != NULL, return -1, "Invalid lock"); + pthread_rwlockattr_t rwlockatt; + pthread_rwlockattr_init(&rwlockatt); + pthread_rwlockattr_setpshared(&rwlockatt, PTHREAD_PROCESS_SHARED); + pthread_rwlock_init(&lock->rwlock, &rwlockatt); return 0; } int ParamRWMutexWRLock(ParamRWMutex *lock) { + PARAM_CHECK(lock != NULL, return -1, "Invalid lock"); + pthread_rwlock_wrlock(&lock->rwlock); return 0; } int ParamRWMutexRDLock(ParamRWMutex *lock) { + PARAM_CHECK(lock != NULL, return -1, "Invalid lock"); + pthread_rwlock_rdlock(&lock->rwlock); return 0; } int ParamRWMutexUnlock(ParamRWMutex *lock) { + PARAM_CHECK(lock != NULL, return -1, "Invalid lock"); + pthread_rwlock_unlock(&lock->rwlock); return 0; } int ParamRWMutexDelete(ParamRWMutex *lock) { + PARAM_CHECK(lock != NULL, return -1, "Invalid lock"); + uint32_t ret = pthread_rwlock_destroy(&lock->rwlock); + PARAM_CHECK(ret == 0, return -1, "Failed to mutex lock ret %d", ret); return 0; } diff --git a/services/param/linux/param_request.c b/services/param/linux/param_request.c index 3b9b8d749..87d1390b9 100644 --- a/services/param/linux/param_request.c +++ b/services/param/linux/param_request.c @@ -40,7 +40,6 @@ __attribute__((constructor)) static void ParameterInit(void) return; } EnableInitLog(INIT_INFO); - PARAM_LOGI("ParameterInit "); InitParamWorkSpace(1); } @@ -51,7 +50,6 @@ __attribute__((destructor)) static void ParameterDeinit(void) close(g_clientFd); g_clientFd = INVALID_SOCKET; } - CloseParamWorkSpace(); pthread_mutex_destroy(&g_clientMutex); }