summaryrefslogtreecommitdiff
path: root/0170-fix-some-bad-code.patch
diff options
context:
space:
mode:
Diffstat (limited to '0170-fix-some-bad-code.patch')
-rw-r--r--0170-fix-some-bad-code.patch165
1 files changed, 165 insertions, 0 deletions
diff --git a/0170-fix-some-bad-code.patch b/0170-fix-some-bad-code.patch
new file mode 100644
index 0000000..9be0493
--- /dev/null
+++ b/0170-fix-some-bad-code.patch
@@ -0,0 +1,165 @@
+From 0340a8248e8a4fb133ab3638679755d8590dafae Mon Sep 17 00:00:00 2001
+From: xuxuepeng <xuxuepeng1@huawei.com>
+Date: Wed, 11 Dec 2024 13:03:21 +0800
+Subject: [PATCH 04/11] fix some bad code
+
+Signed-off-by: xuxuepeng <xuxuepeng1@huawei.com>
+---
+ .../storage/layer_store/graphdriver/driver.c | 19 +++++----------
+ .../graphdriver/overlay2/driver_overlay2.c | 24 ++++++++++++++-----
+ 2 files changed, 24 insertions(+), 19 deletions(-)
+
+diff --git a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/driver.c b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/driver.c
+index 94235b80..99fd573c 100644
+--- a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/driver.c
++++ b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/driver.c
+@@ -121,36 +121,31 @@ static inline void driver_unlock()
+
+ int graphdriver_init(const struct storage_module_init_options *opts)
+ {
+- int ret = 0;
+ size_t i = 0;
+ char driver_home[PATH_MAX] = { 0 };
+
+ if (opts == NULL || opts->storage_root == NULL || opts->driver_name == NULL) {
+- ret = -1;
+- goto out;
++ return -1;
+ }
+
+ int nret = snprintf(driver_home, PATH_MAX, "%s/%s", opts->storage_root, opts->driver_name);
+ if (nret < 0 || (size_t)nret >= PATH_MAX) {
+ ERROR("Sprintf graph driver path failed");
+- ret = -1;
+- goto out;
++ return -1;
+ }
+
+ for (i = 0; i < g_numdrivers; i++) {
+ if (strcmp(opts->driver_name, g_drivers[i].name) == 0) {
+ if (pthread_rwlock_init(&(g_drivers[i].rwlock), NULL) != 0) {
+ ERROR("Failed to init driver rwlock");
+- ret = -1;
+- goto out;
++ return -1;
+ }
+ #ifdef ENABLE_REMOTE_LAYER_STORE
+ g_drivers[i].enable_remote_layer = opts->enable_remote_layer;
+ #endif
+ if (g_drivers[i].ops->init(&g_drivers[i], driver_home, (const char **)opts->driver_opts,
+ opts->driver_opts_len) != 0) {
+- ret = -1;
+- goto out;
++ return -1;
+ }
+ g_graphdriver = &g_drivers[i];
+ break;
+@@ -159,12 +154,10 @@ int graphdriver_init(const struct storage_module_init_options *opts)
+
+ if (i == g_numdrivers) {
+ ERROR("unsupported driver %s", opts->driver_name);
+- ret = -1;
+- goto out;
++ return -1;
+ }
+
+-out:
+- return ret;
++ return 0;
+ }
+
+ int graphdriver_create_rw(const char *id, const char *parent, struct driver_create_opts *create_opts)
+diff --git a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.c b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.c
+index 6d45f463..cc24909a 100644
+--- a/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.c
++++ b/src/daemon/modules/image/oci/storage/layer_store/graphdriver/overlay2/driver_overlay2.c
+@@ -64,6 +64,9 @@ struct io_read_wrapper;
+
+ #define QUOTA_SIZE_OPTION "overlay2.size"
+ #define QUOTA_BASESIZE_OPTIONS "overlay2.basesize"
++#define OVERRIDE_KERNELCHECK_OPTIONS "overlay2.override_kernel_check"
++#define SKIP_MOUNT_HOME_OPTIONS "overlay2.skip_mount_home"
++#define MOUNT_OPTIONS "overlay2.mountopt"
+ // MAX_LAYER_ID_LENGTH represents the number of random characters which can be used to create the unique link identifer
+ // for every layer. If this value is too long then the page size limit for the mount command may be exceeded.
+ // The idLength should be selected such that following equation is true (512 is a buffer for label metadata).
+@@ -150,7 +153,7 @@ static int overlay2_parse_options(struct graphdriver *driver, const char **optio
+ goto out;
+ }
+ overlay_opts->default_quota = converted;
+- } else if (strcasecmp(dup, "overlay2.override_kernel_check") == 0) {
++ } else if (strcasecmp(dup, OVERRIDE_KERNELCHECK_OPTIONS) == 0) {
+ bool converted_bool = 0;
+ ret = util_str_to_bool(val, &converted_bool);
+ if (ret != 0) {
+@@ -160,7 +163,7 @@ static int overlay2_parse_options(struct graphdriver *driver, const char **optio
+ goto out;
+ }
+ overlay_opts->override_kernelcheck = converted_bool;
+- } else if (strcasecmp(dup, "overlay2.skip_mount_home") == 0) {
++ } else if (strcasecmp(dup, SKIP_MOUNT_HOME_OPTIONS) == 0) {
+ bool converted_bool = 0;
+ ret = util_str_to_bool(val, &converted_bool);
+ if (ret != 0) {
+@@ -170,7 +173,7 @@ static int overlay2_parse_options(struct graphdriver *driver, const char **optio
+ goto out;
+ }
+ overlay_opts->skip_mount_home = converted_bool;
+- } else if (strcasecmp(dup, "overlay2.mountopt") == 0) {
++ } else if (strcasecmp(dup, MOUNT_OPTIONS) == 0) {
+ overlay_opts->mount_options = util_strdup_s(val);
+ } else {
+ ERROR("Overlay2: unknown option: '%s'", dup);
+@@ -693,6 +696,10 @@ static char *get_lower(const char *parent, const char *driver_home)
+ goto out;
+ }
+
++ /*
++ * lower format: "l/5697636c0104156cb2bd94be25", so "/" and "\0" must be
++ * counted in the size for snprintf.
++ */
+ lower_len = strlen(OVERLAY_LINK_DIR) + 1 + strlen(parent_link) + 1;
+
+ parent_lower_file = util_path_join(parent_dir, OVERLAY_LAYER_LOWER);
+@@ -707,6 +714,11 @@ static char *get_lower(const char *parent, const char *driver_home)
+ ERROR("parent lower %s too large", parent_link_file);
+ goto out;
+ }
++ /*
++ * with parent link, the lower format will be like
++ * "l/5697636c0104156cb2bd94be25:l/df53b618a57bb50a61755b5623",
++ * so ":" must be counted.
++ */
+ lower_len = lower_len + strlen(parent_lowers) + 1;
+ }
+
+@@ -911,7 +923,7 @@ static int do_create_remote_ro(const char *id, const char *parent, const struct
+ #ifdef ENABLE_USERNS_REMAP
+ if (set_file_owner_for_userns_remap(layer_dir, userns_remap) != 0) {
+ ERROR("Unable to change directory %s owner for user remap.", layer_dir);
+- goto out;
++ goto err_out;
+ }
+ #endif
+
+@@ -977,7 +989,7 @@ static int do_create(const char *id, const char *parent, const struct graphdrive
+ if (set_file_owner_for_userns_remap(layer_dir, userns_remap) != 0) {
+ ERROR("Unable to change directory %s owner for user remap.", layer_dir);
+ ret = -1;
+- goto out;
++ goto err_out;
+ }
+ #endif
+
+@@ -1790,7 +1802,7 @@ out:
+ return ret;
+ }
+
+-bool is_valid_layer_link(const char *link_id, const struct graphdriver *driver)
++static bool is_valid_layer_link(const char *link_id, const struct graphdriver *driver)
+ {
+ bool valid = false;
+ char *link_dir = NULL;
+--
+2.23.0
+