diff options
Diffstat (limited to 'debian/patches/0029-Free-map-to-avoid-resource-leak-issues.patch')
-rw-r--r-- | debian/patches/0029-Free-map-to-avoid-resource-leak-issues.patch | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/debian/patches/0029-Free-map-to-avoid-resource-leak-issues.patch b/debian/patches/0029-Free-map-to-avoid-resource-leak-issues.patch deleted file mode 100644 index d3498b72..00000000 --- a/debian/patches/0029-Free-map-to-avoid-resource-leak-issues.patch +++ /dev/null @@ -1,142 +0,0 @@ -From 898bd1ecefe6c72102f398680dcfef80e4de21c1 Mon Sep 17 00:00:00 2001 -From: Guoqing Jiang <gqjiang@suse.com> -Date: Mon, 11 Jun 2018 17:03:44 +0800 -Subject: [PATCH 29/40] Free map to avoid resource leak issues - -1. There are some places which didn't free map as -discovered by coverity. - -CID 289661 (#1 of 1): Resource leak (RESOURCE_LEAK)12. leaked_storage: Variable mapl going out of scope leaks the storage it points to. -CID 289619 (#3 of 3): Resource leak (RESOURCE_LEAK)63. leaked_storage: Variable map going out of scope leaks the storage it points to. -CID 289618 (#1 of 1): Resource leak (RESOURCE_LEAK)26. leaked_storage: Variable map going out of scope leaks the storage it points to. -CID 289607 (#1 of 1): Resource leak (RESOURCE_LEAK)41. leaked_storage: Variable map going out of scope leaks the storage it points to. - -2. If we call map_by_* inside a loop, then map_free -should be called in the same loop, and it is better -to set map to NULL after free. - -3. And map_unlock is always called with map_lock, -if we don't call map_remove before map_unlock, -then the memory (allocated by map_lock -> map_read --> map_add -> xmalloc) could be leaked. So we -need to free it in map_unlock as well. - -Signed-off-by: Guoqing Jiang <gqjiang@suse.com> -Signed-off-by: Jes Sorensen <jsorensen@fb.com> ---- - Assemble.c | 2 +- - Detail.c | 2 ++ - Incremental.c | 4 ++++ - config.c | 3 ++- - mapfile.c | 2 ++ - mdadm.c | 2 ++ - 6 files changed, 13 insertions(+), 2 deletions(-) - -diff --git a/Assemble.c b/Assemble.c -index 32e6f6ff..5a907c14 100644 ---- a/Assemble.c -+++ b/Assemble.c -@@ -1851,8 +1851,8 @@ try_again: - if (rv == 1 && !pre_exist) - ioctl(mdfd, STOP_ARRAY, NULL); - free(devices); -- map_unlock(&map); - out: -+ map_unlock(&map); - if (rv == 0) { - wait_for(chosen_name, mdfd); - close(mdfd); -diff --git a/Detail.c b/Detail.c -index 860241ce..b3e857a7 100644 ---- a/Detail.c -+++ b/Detail.c -@@ -263,6 +263,7 @@ int Detail(char *dev, struct context *c) - - if (st->ss->export_detail_super) - st->ss->export_detail_super(st); -+ map_free(map); - } else { - struct map_ent *mp, *map = NULL; - char nbuf[64]; -@@ -277,6 +278,7 @@ int Detail(char *dev, struct context *c) - print_escape(mp->path+8); - putchar('\n'); - } -+ map_free(map); - } - if (sra) { - struct mdinfo *mdi; -diff --git a/Incremental.c b/Incremental.c -index 0beab163..0c5698ee 100644 ---- a/Incremental.c -+++ b/Incremental.c -@@ -1413,6 +1413,7 @@ restart: - sysfs_free(sra); - } - } -+ map_free(mapl); - return rv; - } - -@@ -1587,6 +1588,8 @@ static int Incremental_container(struct supertype *st, char *devname, - - assemble_container_content(st, mdfd, ra, c, - chosen_name, &result); -+ map_free(map); -+ map = NULL; - close(mdfd); - } - if (c->export && result) { -@@ -1663,6 +1666,7 @@ static int Incremental_container(struct supertype *st, char *devname, - close(sfd); - } - domain_free(domains); -+ map_free(map); - return 0; - } - -diff --git a/config.c b/config.c -index 48e02788..e14eae0c 100644 ---- a/config.c -+++ b/config.c -@@ -181,9 +181,10 @@ struct mddev_dev *load_containers(void) - } - d->next = rv; - rv = d; -+ map_free(map); -+ map = NULL; - } - free_mdstat(mdstat); -- map_free(map); - - return rv; - } -diff --git a/mapfile.c b/mapfile.c -index f3c8191e..a5025563 100644 ---- a/mapfile.c -+++ b/mapfile.c -@@ -143,6 +143,8 @@ void map_unlock(struct map_ent **melp) - unlink(mapname[2]); - fclose(lf); - } -+ if (*melp) -+ map_free(*melp); - lf = NULL; - } - -diff --git a/mdadm.c b/mdadm.c -index 5afe4155..1cf5c189 100644 ---- a/mdadm.c -+++ b/mdadm.c -@@ -1885,6 +1885,8 @@ static int misc_scan(char devmode, struct context *c) - else - rv |= WaitClean(name, c->verbose); - put_md_name(name); -+ map_free(map); -+ map = NULL; - } - } - free_mdstat(ms); --- -2.17.1 - |