From 1469344a5101a4ac55f2bc633535b82992798749 Mon Sep 17 00:00:00 2001 From: haozi007 Date: Thu, 29 Sep 2022 19:13:58 +0800 Subject: [PATCH] sync from openEuler 1. add hostname env; 2. fix uwait use after free; Signed-off-by: haozi007 --- 0001-fix-memleak.patch | 2 +- ...ancode-about-rest-register-container.patch | 2 +- 0003-adapt-to-openssl-3.0.patch | 2 +- 0004-remove-redundant-header-files.patch | 2 +- 0005-add-isulad-args.patch | 2 +- ...ault-runtime-and-cri-runtime-after-f.patch | 2 +- 0007-calculate-timezone-by-tm_gmtoff.patch | 4 +- ...ixbug-add-hostname-env-for-container.patch | 135 ++++++++++++++ ...-add-testcase-for-check-env-HOSTNAME.patch | 35 ++++ 0010-Add-timezone-CI-test.patch | 105 +++++++++++ 0011-fix-maybe-uwait-use-after-free.patch | 167 ++++++++++++++++++ iSulad.spec | 12 +- 12 files changed, 461 insertions(+), 9 deletions(-) create mode 100644 0008-fixbug-add-hostname-env-for-container.patch create mode 100644 0009-add-testcase-for-check-env-HOSTNAME.patch create mode 100644 0010-Add-timezone-CI-test.patch create mode 100644 0011-fix-maybe-uwait-use-after-free.patch diff --git a/0001-fix-memleak.patch b/0001-fix-memleak.patch index 2049bb7..9b7c46a 100644 --- a/0001-fix-memleak.patch +++ b/0001-fix-memleak.patch @@ -1,7 +1,7 @@ From 199971d61cc53ee11b16b353bcd0594abc86cb3e Mon Sep 17 00:00:00 2001 From: WangFengTu Date: Fri, 26 Aug 2022 09:33:05 +0800 -Subject: [PATCH 1/5] fix memleak +Subject: [PATCH 01/11] fix memleak Signed-off-by: WangFengTu --- diff --git a/0002-cleancode-about-rest-register-container.patch b/0002-cleancode-about-rest-register-container.patch index 269443d..634f232 100644 --- a/0002-cleancode-about-rest-register-container.patch +++ b/0002-cleancode-about-rest-register-container.patch @@ -1,7 +1,7 @@ From bf50cef67ac2288bed7013c675df8d35f370dc32 Mon Sep 17 00:00:00 2001 From: zhangxiaoyu Date: Sat, 27 Aug 2022 10:40:02 +0800 -Subject: [PATCH 2/5] cleancode about rest register container +Subject: [PATCH 02/11] cleancode about rest register container Signed-off-by: zhangxiaoyu --- diff --git a/0003-adapt-to-openssl-3.0.patch b/0003-adapt-to-openssl-3.0.patch index 50cfc1b..be372ac 100644 --- a/0003-adapt-to-openssl-3.0.patch +++ b/0003-adapt-to-openssl-3.0.patch @@ -1,7 +1,7 @@ From 194eb950ea072ac313635d75dc3913f48e300edf Mon Sep 17 00:00:00 2001 From: wujing Date: Wed, 11 May 2022 18:25:40 +0800 -Subject: [PATCH 3/5] adapt to openssl 3.0 +Subject: [PATCH 03/11] adapt to openssl 3.0 SHA512_Init&SHA512_Update&SHA512_Final function have been deprecated since OpenSSL 3.0 diff --git a/0004-remove-redundant-header-files.patch b/0004-remove-redundant-header-files.patch index ca481d4..7478b46 100644 --- a/0004-remove-redundant-header-files.patch +++ b/0004-remove-redundant-header-files.patch @@ -1,7 +1,7 @@ From 64ef4f52a1f75be2dbd1b750a52500818790f501 Mon Sep 17 00:00:00 2001 From: wujing Date: Thu, 1 Sep 2022 09:41:50 +0800 -Subject: [PATCH 4/5] remove redundant header files +Subject: [PATCH 04/11] remove redundant header files Signed-off-by: wujing --- diff --git a/0005-add-isulad-args.patch b/0005-add-isulad-args.patch index 78c88e4..c650c78 100644 --- a/0005-add-isulad-args.patch +++ b/0005-add-isulad-args.patch @@ -1,7 +1,7 @@ From 5a0476a328a39764874257faa23696320656d3e3 Mon Sep 17 00:00:00 2001 From: zhangxiaoyu Date: Tue, 6 Sep 2022 18:45:53 +0800 -Subject: [PATCH 5/5] add isulad args +Subject: [PATCH 05/11] add isulad args Signed-off-by: zhangxiaoyu --- diff --git a/0006-invalid-free-default-runtime-and-cri-runtime-after-f.patch b/0006-invalid-free-default-runtime-and-cri-runtime-after-f.patch index 5bc8a55..2089976 100644 --- a/0006-invalid-free-default-runtime-and-cri-runtime-after-f.patch +++ b/0006-invalid-free-default-runtime-and-cri-runtime-after-f.patch @@ -1,7 +1,7 @@ From 710aa3de0e21c3566934897dd34a9ac497f808a7 Mon Sep 17 00:00:00 2001 From: zhangxiaoyu Date: Thu, 8 Sep 2022 10:14:39 +0800 -Subject: [PATCH 6/6] invalid free default-runtime and cri-runtime after free +Subject: [PATCH 06/11] invalid free default-runtime and cri-runtime after free json-confs Signed-off-by: zhangxiaoyu diff --git a/0007-calculate-timezone-by-tm_gmtoff.patch b/0007-calculate-timezone-by-tm_gmtoff.patch index 9f30c39..10a6293 100644 --- a/0007-calculate-timezone-by-tm_gmtoff.patch +++ b/0007-calculate-timezone-by-tm_gmtoff.patch @@ -1,7 +1,7 @@ From 15314b8d4159da27717e3e835e2cb0f90b3f7e02 Mon Sep 17 00:00:00 2001 From: zhangxiaoyu -Date: Tue, 13 Sep 2022 20:20:58 +1400 -Subject: [PATCH] calculate timezone by tm_gmtoff +Date: Tue, 13 Sep 2022 20:21:25 +1400 +Subject: [PATCH 07/11] calculate timezone by tm_gmtoff Signed-off-by: zhangxiaoyu --- diff --git a/0008-fixbug-add-hostname-env-for-container.patch b/0008-fixbug-add-hostname-env-for-container.patch new file mode 100644 index 0000000..5fd2430 --- /dev/null +++ b/0008-fixbug-add-hostname-env-for-container.patch @@ -0,0 +1,135 @@ +From 502cf70a63afa5b5a728d7813b1ff1481badf63a Mon Sep 17 00:00:00 2001 +From: haozi007 +Date: Thu, 8 Sep 2022 20:29:36 +0800 +Subject: [PATCH 08/11] [fixbug] add hostname env for container + +Signed-off-by: haozi007 +--- + .../executor/container_cb/execution_network.c | 16 +++++++------ + src/daemon/modules/spec/specs.c | 13 +++++----- + src/daemon/modules/spec/specs_extend.c | 24 ++++++++++++++----- + 3 files changed, 34 insertions(+), 19 deletions(-) + +diff --git a/src/daemon/executor/container_cb/execution_network.c b/src/daemon/executor/container_cb/execution_network.c +index fa0ec612..bbc35e80 100644 +--- a/src/daemon/executor/container_cb/execution_network.c ++++ b/src/daemon/executor/container_cb/execution_network.c +@@ -890,17 +890,19 @@ static int create_default_hostname(const char *id, const char *rootpath, bool sh + char hostname_content[MAX_HOST_NAME_LEN + 2] = { 0 }; + + if (v2_spec->config->hostname == NULL) { ++ char hostname[MAX_HOST_NAME_LEN] = { 0 }; + if (share_host) { +- char hostname[MAX_HOST_NAME_LEN] = { 0x00 }; + ret = gethostname(hostname, sizeof(hostname)); +- if (ret != 0) { +- ERROR("Get hostname error"); +- goto out; +- } +- v2_spec->config->hostname = util_strdup_s(hostname); + } else { +- v2_spec->config->hostname = util_strdup_s("localhost"); ++ // max length of hostname from ID is 12 + '\0' ++ nret = snprintf(hostname, 13, "%s", id); ++ ret = nret < 0 ? 1 : 0; ++ } ++ if (ret != 0) { ++ ERROR("Create hostname error"); ++ goto out; + } ++ v2_spec->config->hostname = util_strdup_s(hostname); + } + + nret = snprintf(file_path, PATH_MAX, "%s/%s/%s", rootpath, id, "hostname"); +diff --git a/src/daemon/modules/spec/specs.c b/src/daemon/modules/spec/specs.c +index 44e38674..ec6385a6 100644 +--- a/src/daemon/modules/spec/specs.c ++++ b/src/daemon/modules/spec/specs.c +@@ -2112,6 +2112,13 @@ int merge_all_specs(host_config *host_spec, const char *real_rootfs, container_c + goto out; + } + ++ // should before merge process env ++ ret = merge_hostname(oci_spec, host_spec, v2_spec->config); ++ if (ret != 0) { ++ ERROR("Failed to merge hostname"); ++ goto out; ++ } ++ + ret = merge_process_conf(oci_spec, host_spec, v2_spec->config); + if (ret != 0) { + goto out; +@@ -2138,12 +2145,6 @@ int merge_all_specs(host_config *host_spec, const char *real_rootfs, container_c + goto out; + } + +- ret = merge_hostname(oci_spec, host_spec, v2_spec->config); +- if (ret != 0) { +- ERROR("Failed to merge hostname"); +- goto out; +- } +- + ret = make_annotations(oci_spec, v2_spec->config, host_spec); + if (ret != 0) { + ret = -1; +diff --git a/src/daemon/modules/spec/specs_extend.c b/src/daemon/modules/spec/specs_extend.c +index 6276a586..c8faa102 100644 +--- a/src/daemon/modules/spec/specs_extend.c ++++ b/src/daemon/modules/spec/specs_extend.c +@@ -415,13 +415,19 @@ out: + int merge_env(oci_runtime_spec *oci_spec, const char **env, size_t env_len) + { + int ret = 0; ++ int nret = 0; + size_t new_size = 0; + size_t old_size = 0; +- size_t i = 0; ++ size_t i; + char **temp = NULL; ++ // 10 is lenght of "HOSTNAME=" and '\0' ++ char host_name_env[MAX_HOST_NAME_LEN + 10] = { 0 }; + +- if (env_len == 0 || env == NULL) { +- return 0; ++ nret = snprintf(host_name_env, sizeof(host_name_env), "HOSTNAME=%s", oci_spec->hostname); ++ if (nret < 0 || (size_t)nret >= sizeof(host_name_env)) { ++ ret = -1; ++ ERROR("Sprint failed"); ++ goto out; + } + + ret = make_sure_oci_spec_process(oci_spec); +@@ -429,13 +435,14 @@ int merge_env(oci_runtime_spec *oci_spec, const char **env, size_t env_len) + goto out; + } + +- if (env_len > LIST_ENV_SIZE_MAX - oci_spec->process->env_len) { ++ if (env_len > LIST_ENV_SIZE_MAX - oci_spec->process->env_len - 1) { + ERROR("The length of envionment variables is too long, the limit is %lld", LIST_ENV_SIZE_MAX); + isulad_set_error_message("The length of envionment variables is too long, the limit is %d", LIST_ENV_SIZE_MAX); + ret = -1; + goto out; + } +- new_size = (oci_spec->process->env_len + env_len) * sizeof(char *); ++ // add 1 for hostname env ++ new_size = (oci_spec->process->env_len + env_len + 1) * sizeof(char *); + old_size = oci_spec->process->env_len * sizeof(char *); + ret = util_mem_realloc((void **)&temp, new_size, oci_spec->process->env, old_size); + if (ret != 0) { +@@ -445,7 +452,12 @@ int merge_env(oci_runtime_spec *oci_spec, const char **env, size_t env_len) + } + + oci_spec->process->env = temp; +- for (i = 0; i < env_len; i++) { ++ ++ // append hostname env into default oci spec env list ++ oci_spec->process->env[oci_spec->process->env_len] = util_strdup_s(host_name_env); ++ oci_spec->process->env_len++; ++ ++ for (i = 0; i < env_len && env != NULL; i++) { + oci_spec->process->env[oci_spec->process->env_len] = util_strdup_s(env[i]); + oci_spec->process->env_len++; + } +-- +2.25.1 + diff --git a/0009-add-testcase-for-check-env-HOSTNAME.patch b/0009-add-testcase-for-check-env-HOSTNAME.patch new file mode 100644 index 0000000..d403392 --- /dev/null +++ b/0009-add-testcase-for-check-env-HOSTNAME.patch @@ -0,0 +1,35 @@ +From b0664f10a349563376a0db00c1524d01599cd697 Mon Sep 17 00:00:00 2001 +From: haozi007 +Date: Wed, 14 Sep 2022 10:49:22 +0800 +Subject: [PATCH 09/11] add testcase for check env HOSTNAME + +Signed-off-by: haozi007 +--- + CI/test_cases/container_cases/run.sh | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/CI/test_cases/container_cases/run.sh b/CI/test_cases/container_cases/run.sh +index 29c761d3..1dea51ab 100755 +--- a/CI/test_cases/container_cases/run.sh ++++ b/CI/test_cases/container_cases/run.sh +@@ -26,6 +26,17 @@ source ../helpers.sh + function do_test_t() + { + containername=test_basic_run ++ ++ tid=$(isula run --name $containername -td busybox) ++ hostname=$(isula exec -it $containername hostname) ++ fn_check_eq "${hostname}" "${tid:0:12}" "default hostname is not id of container" ++ isula exec -it $containername env | grep HOSTNAME ++ fn_check_eq "$?" "0" "check HOSTNAME env failed" ++ isula stop -t 0 $tid ++ fn_check_eq "$?" "0" "stop failed" ++ isula rm $tid ++ fn_check_eq "$?" "0" "rm failed" ++ + isula run --name $containername -td busybox + fn_check_eq "$?" "0" "run failed" + testcontainer $containername running +-- +2.25.1 + diff --git a/0010-Add-timezone-CI-test.patch b/0010-Add-timezone-CI-test.patch new file mode 100644 index 0000000..3d14ffa --- /dev/null +++ b/0010-Add-timezone-CI-test.patch @@ -0,0 +1,105 @@ +From eaad0bfcd96ffba436413a46bde5bb96db4e754e Mon Sep 17 00:00:00 2001 +From: zhongtao +Date: Thu, 15 Sep 2022 15:43:42 +1400 +Subject: [PATCH 10/11] Add timezone CI test + +Signed-off-by: zhongtao +--- + CI/test_cases/container_cases/timezone.sh | 85 +++++++++++++++++++++++ + 1 file changed, 85 insertions(+) + create mode 100644 CI/test_cases/container_cases/timezone.sh + +diff --git a/CI/test_cases/container_cases/timezone.sh b/CI/test_cases/container_cases/timezone.sh +new file mode 100644 +index 00000000..d434477d +--- /dev/null ++++ b/CI/test_cases/container_cases/timezone.sh +@@ -0,0 +1,85 @@ ++#!/bin/bash ++# ++# attributes: isulad timezone ++# concurrent: NA ++# spend time: 10 ++ ++####################################################################### ++##- Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. ++# - iSulad licensed under the Mulan PSL v2. ++# - You can use this software according to the terms and conditions of the Mulan PSL v2. ++# - You may obtain a copy of Mulan PSL v2 at: ++# - http://license.coscl.org.cn/MulanPSL2 ++# - THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR ++# - IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR ++# - PURPOSE. ++# - See the Mulan PSL v2 for more details. ++##- @Description:CI ++##- @Author: zhongtao ++##- @Create: 2022-09-13 ++####################################################################### ++ ++source ../helpers.sh ++curcnt_timezone=`readlink /etc/localtime` ++ ++function do_check_timezone() ++{ ++ ln -sf $1 /etc/localtime ++ localtime=`date "+%:z" | sed 's/://g'` ++ ++ check_valgrind_log ++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - stop isulad failed" && return ${FAILURE} ++ ++ start_isulad_with_valgrind ++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - start isulad failed" && return ${FAILURE} ++ ++ containername="test_timezone" ++ ++ isula run --name $containername $2 /bin/sh ++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to run container with image: ${image}" && return ${FAILURE} ++ ++ containertime=`isula inspect -f "{{.State.StartedAt}}" $containername | tail -c 7 | sed 's/://g'` ++ fn_check_eq "$localtime" "$containertime" "localtime is $localtime get: $containertime" ++ ++ isula rm -f $containername ++} ++ ++function test_timezone() ++{ ++ local image="busybox" ++ local test="container timezone test => (${FUNCNAME[@]})" ++ ++ msg_info "${test} starting..." ++ ++ isula pull ${image} ++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image}" && return ${FAILURE} ++ ++ isula images | grep busybox ++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && return ${FAILURE} ++ ++ do_check_timezone "/usr/share/zoneinfo/Pacific/Kiritimati" "$image" ++ do_check_timezone "/usr/share/zoneinfo/right/Canada/Newfoundland" "$image" ++ do_check_timezone "/usr/share/zoneinfo/Asia/Kolkata" "$image" ++ do_check_timezone "/usr/share/zoneinfo/right/Pacific/Chatham" "$image" ++ do_check_timezone "/usr/share/zoneinfo/Etc/GMT" "$image" ++ ++ ln -sf $curcnt_timezone /etc/localtime ++ ++ isula rmi ${image} ++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to remove image ${image}" && return ${FAILURE} ++ ++ check_valgrind_log ++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - stop isulad failed" && return ${FAILURE} ++ ++ start_isulad_with_valgrind ++ [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - start isulad failed" && return ${FAILURE} ++ ++ msg_info "${test} finished with return ${TC_RET_T}..." ++ return $TC_RET_T ++} ++ ++declare -i ans=0 ++ ++test_timezone || ((ans++)) ++ ++show_result ${ans} "${curr_path}/${0}" +-- +2.25.1 + diff --git a/0011-fix-maybe-uwait-use-after-free.patch b/0011-fix-maybe-uwait-use-after-free.patch new file mode 100644 index 0000000..c6499d1 --- /dev/null +++ b/0011-fix-maybe-uwait-use-after-free.patch @@ -0,0 +1,167 @@ +From 95815fe3332197279259ecc4ace08e2e20a174cf Mon Sep 17 00:00:00 2001 +From: zhangxiaoyu +Date: Wed, 28 Sep 2022 10:57:00 +0800 +Subject: [PATCH 11/11] fix maybe uwait use after free + +Signed-off-by: zhangxiaoyu +--- + .../graphdriver/devmapper/wrapper_devmapper.c | 77 +++++++++++++++---- + .../graphdriver/devmapper/wrapper_devmapper.h | 3 + + 2 files changed, 64 insertions(+), 16 deletions(-) + +diff --git a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper/wrapper_devmapper.c b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper/wrapper_devmapper.c +index 8a1dfff5..2513d64a 100644 +--- a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper/wrapper_devmapper.c ++++ b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper/wrapper_devmapper.c +@@ -359,6 +359,17 @@ out: + return ret; + } + ++void free_udev_wait_pth_t(udev_wait_pth_t* uwait) ++{ ++ if (uwait->cond_init) { ++ pthread_cond_destroy(&uwait->wait_cond); ++ } ++ if (uwait->mutex_init) { ++ pthread_mutex_destroy(&uwait->udev_mutex); ++ } ++ free(uwait); ++} ++ + static void *udev_wait_process(void *data) + { + int ret = 0; +@@ -376,13 +387,49 @@ static void *udev_wait_process(void *data) + } else { + uwait->state = DEV_OK; + } ++ if (pthread_cond_wait(&uwait->wait_cond, &uwait->udev_mutex) != 0) { ++ CRIT("Udev wait condition failed"); ++ } + pthread_mutex_unlock(&uwait->udev_mutex); + ++ free_udev_wait_pth_t(uwait); ++ + out: + DAEMON_CLEAR_ERRMSG(); + return NULL; + } + ++udev_wait_pth_t *init_udev_wait_pth_t(uint32_t cookie) ++{ ++ udev_wait_pth_t *uwait = NULL; ++ ++ uwait = util_common_calloc_s(sizeof(udev_wait_pth_t)); ++ if (uwait == NULL) { ++ ERROR("Out of memory"); ++ return NULL; ++ } ++ uwait->cookie = cookie; ++ uwait->state = DEV_INIT; ++ uwait->mutex_init = false; ++ uwait->cond_init = false; ++ ++ if (pthread_mutex_init(&uwait->udev_mutex, NULL) != 0) { ++ ERROR("Udev mutex initialized failed"); ++ free(uwait); ++ return NULL; ++ } ++ uwait->mutex_init = true; ++ ++ if (pthread_cond_init(&uwait->wait_cond, NULL) != 0) { ++ ERROR("Udev condition initialized failed"); ++ free_udev_wait_pth_t(uwait); ++ return NULL; ++ } ++ uwait->cond_init = true; ++ ++ return uwait; ++} ++ + // UdevWait waits for any processes that are waiting for udev to complete the specified cookie. + void dev_udev_wait(uint32_t cookie) + { +@@ -396,51 +443,49 @@ void dev_udev_wait(uint32_t cookie) + return; + } + +- uwait = util_common_calloc_s(sizeof(udev_wait_pth_t)); ++ // free in udev_wait_process ++ uwait = init_udev_wait_pth_t(cookie); + if (uwait == NULL) { +- ERROR("Out of memory"); + return; + } +- uwait->cookie = cookie; +- uwait->state = DEV_INIT; +- +- if (pthread_mutex_init(&uwait->udev_mutex, NULL) != 0) { +- ERROR("Udev mutex initialized failed"); +- goto free_out; +- } + + if (pthread_create(&tid, NULL, udev_wait_process, uwait) != 0) { + ERROR("devmapper: create udev wait process thread error:%s", strerror(errno)); +- goto free_out; ++ free_udev_wait_pth_t(uwait); ++ return; + } + + while (true) { + pthread_mutex_lock(&uwait->udev_mutex); + if (uwait->state != DEV_INIT) { + pthread_mutex_unlock(&uwait->udev_mutex); +- goto free_out; ++ goto out; + } + pthread_mutex_unlock(&uwait->udev_mutex); + + if (gettimeofday(&end, NULL) != 0) { + ERROR("devmapper: get time failed"); +- goto free_out; ++ goto out; + } + + timeout = (end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec) / 1000000; // seconds + if (timeout >= (float)dm_udev_wait_timeout) { + if (dm_udev_complete(cookie) != 1) { + ERROR("Failed to complete udev cookie %u on udev wait timeout", cookie); +- goto free_out; ++ goto out; + } + ERROR("Wait on udev cookie time out"); + break; + } + } + +-free_out: +- pthread_mutex_destroy(&uwait->udev_mutex); +- free(uwait); ++out: ++ pthread_mutex_lock(&uwait->udev_mutex); ++ if (pthread_cond_broadcast(&uwait->wait_cond) != 0) { ++ ERROR("Failed to broadcast wait conditio"); ++ } ++ pthread_mutex_unlock(&uwait->udev_mutex); ++ return; + } + + int dev_delete_device_force(const char *name) +diff --git a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper/wrapper_devmapper.h b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper/wrapper_devmapper.h +index 6a45db58..5a692980 100644 +--- a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper/wrapper_devmapper.h ++++ b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/devmapper/wrapper_devmapper.h +@@ -74,7 +74,10 @@ typedef enum { + typedef struct { + uint32_t cookie; + pthread_mutex_t udev_mutex; ++ bool mutex_init; + int state; // 0: ok 1:err_udev_wait 2: err_udev_wait_timeout ++ pthread_cond_t wait_cond; ++ bool cond_init; + } udev_wait_pth_t; + + char *dev_strerror(int errnum); +-- +2.25.1 + diff --git a/iSulad.spec b/iSulad.spec index 92ef862..985acac 100644 --- a/iSulad.spec +++ b/iSulad.spec @@ -1,5 +1,5 @@ %global _version 2.0.16 -%global _release 7 +%global _release 8 %global is_systemd 1 %global enable_shimv2 1 %global is_embedded 1 @@ -20,6 +20,10 @@ Patch0004: 0004-remove-redundant-header-files.patch Patch0005: 0005-add-isulad-args.patch Patch0006: 0006-invalid-free-default-runtime-and-cri-runtime-after-f.patch Patch0007: 0007-calculate-timezone-by-tm_gmtoff.patch +Patch0008: 0008-fixbug-add-hostname-env-for-container.patch +Patch0009: 0009-add-testcase-for-check-env-HOSTNAME.patch +Patch0010: 0010-Add-timezone-CI-test.patch +Patch0011: 0011-fix-maybe-uwait-use-after-free.patch %ifarch x86_64 aarch64 Provides: libhttpclient.so()(64bit) @@ -242,6 +246,12 @@ fi %endif %changelog +* Thu Sep 29 2022 haozi007 - 2.0.16-8 +- Type: enhancement +- ID: NA +- SUG: NA +- DESC: sync from openEuler + * Tue Sep 20 2022 zhangxiaoyu - 2.0.16-7 - Type: enhancement - ID: NA