From 8c364c784966be1700ea39ae45028f3e9be9cae0 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Tue, 27 Mar 2018 22:40:05 +0100 Subject: gentoo resync : 27.03.2018 --- ...date-metadata_update-size-before-using-it.patch | 44 ------- ...-not-try-to-restart-if-reshape-is-running.patch | 45 -------- ....1-Grow-fix-removal-of-line-in-wrong-case.patch | 39 ------- ...-use-strcpy-rather-than-pointless-strncpy.patch | 32 ------ ...date-metadata_update-size-before-using-it.patch | 128 --------------------- ...file-install-mdadm-grow-continue-.service.patch | 28 ----- ...on-allow-prepare_update-to-report-failure.patch | 119 ------------------- ...e-Unix-domain-socket-is-created-with-safe.patch | 34 ------ 8 files changed, 469 deletions(-) delete mode 100644 sys-fs/mdadm/files/mdadm-3.3.1-DDF-validate-metadata_update-size-before-using-it.patch delete mode 100644 sys-fs/mdadm/files/mdadm-3.3.1-Grow-Do-not-try-to-restart-if-reshape-is-running.patch delete mode 100644 sys-fs/mdadm/files/mdadm-3.3.1-Grow-fix-removal-of-line-in-wrong-case.patch delete mode 100644 sys-fs/mdadm/files/mdadm-3.3.1-IMSM-use-strcpy-rather-than-pointless-strncpy.patch delete mode 100644 sys-fs/mdadm/files/mdadm-3.3.1-IMSM-validate-metadata_update-size-before-using-it.patch delete mode 100644 sys-fs/mdadm/files/mdadm-3.3.1-Makefile-install-mdadm-grow-continue-.service.patch delete mode 100644 sys-fs/mdadm/files/mdadm-3.3.1-mdmon-allow-prepare_update-to-report-failure.patch delete mode 100644 sys-fs/mdadm/files/mdadm-3.3.1-mdmon-ensure-Unix-domain-socket-is-created-with-safe.patch (limited to 'sys-fs/mdadm/files') diff --git a/sys-fs/mdadm/files/mdadm-3.3.1-DDF-validate-metadata_update-size-before-using-it.patch b/sys-fs/mdadm/files/mdadm-3.3.1-DDF-validate-metadata_update-size-before-using-it.patch deleted file mode 100644 index befb7da91735..000000000000 --- a/sys-fs/mdadm/files/mdadm-3.3.1-DDF-validate-metadata_update-size-before-using-it.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 1f17f96b538793a0e665e471f602c6fa490ec167 Mon Sep 17 00:00:00 2001 -From: NeilBrown -Date: Thu, 10 Jul 2014 15:59:06 +1000 -Subject: [PATCH 12/14] DDF: validate metadata_update size before using it. - -process_update already checks update->len, for all but -the 'magic', prepare_update doesn't at all. - -So add tests to prepare_update that we don't exceed the buffer. -This will consequently protect process_update from looking -for a 'magic' which isn't there. - -Reported-by: Vincent Berg -Signed-off-by: NeilBrown ---- - super-ddf.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/super-ddf.c b/super-ddf.c -index 1e43ca2..8957c2e 100644 ---- a/super-ddf.c -+++ b/super-ddf.c -@@ -4914,10 +4914,16 @@ static int ddf_prepare_update(struct supertype *st, - * If a malloc is needed, do it here. - */ - struct ddf_super *ddf = st->sb; -- be32 *magic = (be32 *)update->buf; -+ be32 *magic; -+ if (update->len < 4) -+ return 0; -+ magic = (be32 *)update->buf; - if (be32_eq(*magic, DDF_VD_CONF_MAGIC)) { - struct vcl *vcl; -- struct vd_config *conf = (struct vd_config *) update->buf; -+ struct vd_config *conf; -+ if (update->len < (int)sizeof(*conf)) -+ return 0; -+ conf = (struct vd_config *) update->buf; - if (posix_memalign(&update->space, 512, - offsetof(struct vcl, conf) - + ddf->conf_rec_len * 512) != 0) { --- -2.0.0 - diff --git a/sys-fs/mdadm/files/mdadm-3.3.1-Grow-Do-not-try-to-restart-if-reshape-is-running.patch b/sys-fs/mdadm/files/mdadm-3.3.1-Grow-Do-not-try-to-restart-if-reshape-is-running.patch deleted file mode 100644 index 717317b8a2d0..000000000000 --- a/sys-fs/mdadm/files/mdadm-3.3.1-Grow-Do-not-try-to-restart-if-reshape-is-running.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 13ffbe89b6103c146c08eb1c9a70833306c8322b Mon Sep 17 00:00:00 2001 -From: Pawel Baldysiak -Date: Wed, 16 Jul 2014 12:20:34 +0200 -Subject: [PATCH 14/14] Grow: Do not try to restart if reshape is running - -Grow process did not check if reshape is already started -when deciding about restarting. -Sync_action should be checked in this case, and if -reshape is running - restart flag should not be set. -Otherwise, Grow process will fail to write data to -sysfs, and reshape will not be continued. - -Signed-off-by: Pawel Baldysiak -Signed-off-by: Artur Paszkiewicz -Signed-off-by: NeilBrown ---- - Grow.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/Grow.c b/Grow.c -index a2f4f14..ea9cc60 100644 ---- a/Grow.c -+++ b/Grow.c -@@ -2822,6 +2822,7 @@ static int reshape_array(char *container, int fd, char *devname, - unsigned long long array_size; - int done; - struct mdinfo *sra = NULL; -+ char buf[20]; - - /* when reshaping a RAID0, the component_size might be zero. - * So try to fix that up. -@@ -2869,7 +2870,9 @@ static int reshape_array(char *container, int fd, char *devname, - goto release; - } - -- if (st->ss->external && restart && (info->reshape_progress == 0)) { -+ if (st->ss->external && restart && (info->reshape_progress == 0) && -+ !((sysfs_get_str(info, NULL, "sync_action", buf, sizeof(buf)) > 0) && -+ (strncmp(buf, "reshape", 7) == 0))) { - /* When reshape is restarted from '0', very begin of array - * it is possible that for external metadata reshape and array - * configuration doesn't happen. --- -2.0.0 - diff --git a/sys-fs/mdadm/files/mdadm-3.3.1-Grow-fix-removal-of-line-in-wrong-case.patch b/sys-fs/mdadm/files/mdadm-3.3.1-Grow-fix-removal-of-line-in-wrong-case.patch deleted file mode 100644 index acc38267d160..000000000000 --- a/sys-fs/mdadm/files/mdadm-3.3.1-Grow-fix-removal-of-line-in-wrong-case.patch +++ /dev/null @@ -1,39 +0,0 @@ -From e339dba2a1744dc6860a58e286ded39fc993c2db Mon Sep 17 00:00:00 2001 -From: Pawel Baldysiak -Date: Wed, 11 Jun 2014 15:18:44 +0000 -Subject: [PATCH 02/14] Grow: fix removal of line in wrong case - -Commit 18d9bcfa33939cee345d4d7735bc6081bcc409c8 -removed wrong line (in case RAID0->RAID4). -This patch corrects this mistake -(line should be removed in case RAID4->RAID4). - -Signed-off-by: Pawel Baldysiak -Signed-off-by: NeilBrown ---- - Grow.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Grow.c b/Grow.c -index 12730e2..a2f4f14 100644 ---- a/Grow.c -+++ b/Grow.c -@@ -1324,6 +1324,7 @@ char *analyse_change(char *devname, struct mdinfo *info, struct reshape *re) - - switch (re->level) { - case 4: -+ re->before.layout = 0; - re->after.layout = 0; - break; - case 5: -@@ -1339,7 +1340,6 @@ char *analyse_change(char *devname, struct mdinfo *info, struct reshape *re) - - switch (re->level) { - case 4: -- re->before.layout = 0; - re->after.layout = 0; - break; - case 5: --- -2.0.0 - diff --git a/sys-fs/mdadm/files/mdadm-3.3.1-IMSM-use-strcpy-rather-than-pointless-strncpy.patch b/sys-fs/mdadm/files/mdadm-3.3.1-IMSM-use-strcpy-rather-than-pointless-strncpy.patch deleted file mode 100644 index b63b1e732d36..000000000000 --- a/sys-fs/mdadm/files/mdadm-3.3.1-IMSM-use-strcpy-rather-than-pointless-strncpy.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 6d8d290a2f09a3bfd9e44f382ae5daea128772f7 Mon Sep 17 00:00:00 2001 -From: NeilBrown -Date: Thu, 3 Jul 2014 15:04:01 +1000 -Subject: [PATCH 03/14] IMSM: use strcpy rather than pointless strncpy. - -As strncpy doesn't guarantee to nul-terminate, some static -analysers get upset that it is followed by a 'strncat'. -So just use a 'strcpy' - strlen(disk_by_path) is constant -and definitely less than PATH_MAX. - -Link: https://github.com/neilbrown/mdadm/issues/4 -Signed-off-by: NeilBrown ---- - super-intel.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/super-intel.c b/super-intel.c -index 9dd807a..0106b4f 100644 ---- a/super-intel.c -+++ b/super-intel.c -@@ -9357,7 +9357,7 @@ static const char *imsm_get_disk_controller_domain(const char *path) - char *drv=NULL; - struct stat st; - -- strncpy(disk_path, disk_by_path, PATH_MAX - 1); -+ strcpy(disk_path, disk_by_path); - strncat(disk_path, path, PATH_MAX - strlen(disk_path) - 1); - if (stat(disk_path, &st) == 0) { - struct sys_dev* hba; --- -2.0.0 - diff --git a/sys-fs/mdadm/files/mdadm-3.3.1-IMSM-validate-metadata_update-size-before-using-it.patch b/sys-fs/mdadm/files/mdadm-3.3.1-IMSM-validate-metadata_update-size-before-using-it.patch deleted file mode 100644 index b1610835753a..000000000000 --- a/sys-fs/mdadm/files/mdadm-3.3.1-IMSM-validate-metadata_update-size-before-using-it.patch +++ /dev/null @@ -1,128 +0,0 @@ -From 095b8088fa99ad1195d1aba03af2aa561b4a6379 Mon Sep 17 00:00:00 2001 -From: NeilBrown -Date: Thu, 10 Jul 2014 16:09:28 +1000 -Subject: [PATCH 13/14] IMSM: validate metadata_update size before using it. - -Every case in prepare_update check that the size message -size is sufficient, so process_update doesn't need to check anything. - -Reported-by: Vincent Berg -Signed-off-by: NeilBrown ---- - super-intel.c | 44 +++++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 41 insertions(+), 3 deletions(-) - -diff --git a/super-intel.c b/super-intel.c -index 2547b4a..b4efa72 100644 ---- a/super-intel.c -+++ b/super-intel.c -@@ -8587,7 +8587,7 @@ static void imsm_process_update(struct supertype *st, - } - case update_add_remove_disk: { - /* we may be able to repair some arrays if disks are -- * being added, check teh status of add_remove_disk -+ * being added, check the status of add_remove_disk - * if discs has been added. - */ - if (add_remove_disk_update(super)) { -@@ -8617,19 +8617,28 @@ static int imsm_prepare_update(struct supertype *st, - * integrated by the monitor thread without worrying about live pointers - * in the manager thread. - */ -- enum imsm_update_type type = *(enum imsm_update_type *) update->buf; -+ enum imsm_update_type type; - struct intel_super *super = st->sb; - struct imsm_super *mpb = super->anchor; - size_t buf_len; - size_t len = 0; - -+ if (update->len < (int)sizeof(type)) -+ return 0; -+ -+ type = *(enum imsm_update_type *) update->buf; -+ - switch (type) { - case update_general_migration_checkpoint: -+ if (update->len < (int)sizeof(struct imsm_update_general_migration_checkpoint)) -+ return 0; - dprintf("imsm: prepare_update() " - "for update_general_migration_checkpoint called\n"); - break; - case update_takeover: { - struct imsm_update_takeover *u = (void *)update->buf; -+ if (update->len < (int)sizeof(*u)) -+ return 0; - if (u->direction == R0_TO_R10) { - void **tail = (void **)&update->space_list; - struct imsm_dev *dev = get_imsm_dev(super, u->subarray); -@@ -8670,6 +8679,9 @@ static int imsm_prepare_update(struct supertype *st, - struct intel_dev *dl; - void **space_tail = (void**)&update->space_list; - -+ if (update->len < (int)sizeof(*u)) -+ return 0; -+ - dprintf("imsm: imsm_prepare_update() for update_reshape\n"); - - for (dl = super->devlist; dl; dl = dl->next) { -@@ -8702,6 +8714,9 @@ static int imsm_prepare_update(struct supertype *st, - void *s; - int current_level = -1; - -+ if (update->len < (int)sizeof(*u)) -+ return 0; -+ - dprintf("imsm: imsm_prepare_update() for update_reshape\n"); - - /* add space for bigger array in update -@@ -8769,6 +8784,13 @@ static int imsm_prepare_update(struct supertype *st, - break; - } - case update_size_change: { -+ if (update->len < (int)sizeof(struct imsm_update_size_change)) -+ return 0; -+ break; -+ } -+ case update_activate_spare: { -+ if (update->len < (int)sizeof(struct imsm_update_activate_spare)) -+ return 0; - break; - } - case update_create_array: { -@@ -8781,6 +8803,9 @@ static int imsm_prepare_update(struct supertype *st, - int i; - int activate = 0; - -+ if (update->len < (int)sizeof(*u)) -+ return 0; -+ - inf = get_disk_info(u); - len = sizeof_imsm_dev(dev, 1); - /* allocate a new super->devlist entry */ -@@ -8802,9 +8827,22 @@ static int imsm_prepare_update(struct supertype *st, - } - len += activate * sizeof(struct imsm_disk); - break; -- default: -+ } -+ case update_kill_array: { -+ if (update->len < (int)sizeof(struct imsm_update_kill_array)) -+ return 0; - break; - } -+ case update_rename_array: { -+ if (update->len < (int)sizeof(struct imsm_update_rename_array)) -+ return 0; -+ break; -+ } -+ case update_add_remove_disk: -+ /* no update->len needed */ -+ break; -+ default: -+ return 0; - } - - /* check if we need a larger metadata buffer */ --- -2.0.0 - diff --git a/sys-fs/mdadm/files/mdadm-3.3.1-Makefile-install-mdadm-grow-continue-.service.patch b/sys-fs/mdadm/files/mdadm-3.3.1-Makefile-install-mdadm-grow-continue-.service.patch deleted file mode 100644 index 431bfd1abe3b..000000000000 --- a/sys-fs/mdadm/files/mdadm-3.3.1-Makefile-install-mdadm-grow-continue-.service.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 616f197f9d6d044afb9e27ddc9cd087d21d610f0 Mon Sep 17 00:00:00 2001 -From: NeilBrown -Date: Tue, 10 Jun 2014 20:34:40 +1000 -Subject: [PATCH 01/14] Makefile: install mdadm-grow-continue@.service - -Forgot to add this to install-systemd target - -Signed-off-by: NeilBrown ---- - Makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Makefile b/Makefile -index c7e7a42..1a4a5dc 100644 ---- a/Makefile -+++ b/Makefile -@@ -290,7 +290,7 @@ install-udev: udev-md-raid-arrays.rules udev-md-raid-assembly.rules - - install-systemd: systemd/mdmon@.service - @for file in mdmon@.service mdmonitor.service mdadm-last-resort@.timer \ -- mdadm-last-resort@.service ; \ -+ mdadm-last-resort@.service mdadm-grow-continue@.service; \ - do sed -e 's,BINDIR,$(BINDIR),g' systemd/$$file > .install.tmp && \ - echo $(INSTALL) -D -m 644 systemd/$$file $(DESTDIR)$(SYSTEMD_DIR)/$$file ; \ - $(INSTALL) -D -m 644 .install.tmp $(DESTDIR)$(SYSTEMD_DIR)/$$file ; \ --- -2.0.0 - diff --git a/sys-fs/mdadm/files/mdadm-3.3.1-mdmon-allow-prepare_update-to-report-failure.patch b/sys-fs/mdadm/files/mdadm-3.3.1-mdmon-allow-prepare_update-to-report-failure.patch deleted file mode 100644 index 772248b19c3d..000000000000 --- a/sys-fs/mdadm/files/mdadm-3.3.1-mdmon-allow-prepare_update-to-report-failure.patch +++ /dev/null @@ -1,119 +0,0 @@ -From 5fe6f031d9a21a935f0ef1b1fbdb314b53f2199f Mon Sep 17 00:00:00 2001 -From: NeilBrown -Date: Thu, 10 Jul 2014 15:54:02 +1000 -Subject: [PATCH 11/14] mdmon: allow prepare_update to report failure. - -If 'prepare_update' fails for some reason there is little -point continuing on to 'process_update'. -For now only malloc failures are caught, but other failures -will be considered in future. - -Signed-off-by: NeilBrown ---- - managemon.c | 3 ++- - mdadm.h | 5 ++++- - super-ddf.c | 8 +++++--- - super-intel.c | 9 +++++---- - 4 files changed, 16 insertions(+), 9 deletions(-) - -diff --git a/managemon.c b/managemon.c -index 5f7e2ce..1c9eccc 100644 ---- a/managemon.c -+++ b/managemon.c -@@ -819,7 +819,8 @@ static void handle_message(struct supertype *container, struct metadata_update * - mu->space_list = NULL; - mu->next = NULL; - if (container->ss->prepare_update) -- container->ss->prepare_update(container, mu); -+ if (!container->ss->prepare_update(container, mu)) -+ free_updates(&mu); - queue_metadata_update(mu); - } - } -diff --git a/mdadm.h b/mdadm.h -index 914d67c..02a9288 100644 ---- a/mdadm.h -+++ b/mdadm.h -@@ -929,7 +929,10 @@ extern struct superswitch { - void (*sync_metadata)(struct supertype *st); - void (*process_update)(struct supertype *st, - struct metadata_update *update); -- void (*prepare_update)(struct supertype *st, -+ /* Prepare updates allocates extra memory that might be -+ * needed. If the update cannot be understood, return 0. -+ */ -+ int (*prepare_update)(struct supertype *st, - struct metadata_update *update); - - /* activate_spare will check if the array is degraded and, if it -diff --git a/super-ddf.c b/super-ddf.c -index ab9fc46..1e43ca2 100644 ---- a/super-ddf.c -+++ b/super-ddf.c -@@ -4906,8 +4906,8 @@ static void ddf_process_update(struct supertype *st, - /* case DDF_SPARE_ASSIGN_MAGIC */ - } - --static void ddf_prepare_update(struct supertype *st, -- struct metadata_update *update) -+static int ddf_prepare_update(struct supertype *st, -+ struct metadata_update *update) - { - /* This update arrived at managemon. - * We are about to pass it to monitor. -@@ -4922,15 +4922,17 @@ static void ddf_prepare_update(struct supertype *st, - offsetof(struct vcl, conf) - + ddf->conf_rec_len * 512) != 0) { - update->space = NULL; -- return; -+ return 0; - } - vcl = update->space; - vcl->conf.sec_elmnt_count = conf->sec_elmnt_count; - if (alloc_other_bvds(ddf, vcl) != 0) { - free(update->space); - update->space = NULL; -+ return 0; - } - } -+ return 1; - } - - /* -diff --git a/super-intel.c b/super-intel.c -index 7734bde..2547b4a 100644 ---- a/super-intel.c -+++ b/super-intel.c -@@ -8607,8 +8607,8 @@ static void imsm_process_update(struct supertype *st, - - static struct mdinfo *get_spares_for_grow(struct supertype *st); - --static void imsm_prepare_update(struct supertype *st, -- struct metadata_update *update) -+static int imsm_prepare_update(struct supertype *st, -+ struct metadata_update *update) - { - /** - * Allocate space to hold new disk entries, raid-device entries or a new -@@ -8828,6 +8828,7 @@ static void imsm_prepare_update(struct supertype *st, - else - super->next_buf = NULL; - } -+ return 1; - } - - /* must be called while manager is quiesced */ -@@ -9716,8 +9717,8 @@ static void imsm_update_metadata_locally(struct supertype *st, - mu.space = NULL; - mu.space_list = NULL; - mu.next = NULL; -- imsm_prepare_update(st, &mu); -- imsm_process_update(st, &mu); -+ if (imsm_prepare_update(st, &mu)) -+ imsm_process_update(st, &mu); - - while (mu.space_list) { - void **space = mu.space_list; --- -2.0.0 - diff --git a/sys-fs/mdadm/files/mdadm-3.3.1-mdmon-ensure-Unix-domain-socket-is-created-with-safe.patch b/sys-fs/mdadm/files/mdadm-3.3.1-mdmon-ensure-Unix-domain-socket-is-created-with-safe.patch deleted file mode 100644 index 9780196e28cd..000000000000 --- a/sys-fs/mdadm/files/mdadm-3.3.1-mdmon-ensure-Unix-domain-socket-is-created-with-safe.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 120ec6f7b96455e42bdfa9131c0c9026c57eaf19 Mon Sep 17 00:00:00 2001 -From: NeilBrown -Date: Thu, 3 Jul 2014 17:06:45 +1000 -Subject: [PATCH 09/14] mdmon: ensure Unix domain socket is created with safe - permissions. - -In the unlikely case that mdmon is started with an overly -permissive umask, we don't want to risk giving away world acccess. - -All other "mkdir" and "O_CREAT" calls in mdmon and mdadm set -a suitably restrictive permission mask. 'bind' don't take an -explicit mask so it needs an implicit one. - -Reported-by: Vincent Berg -Signed-off-by: NeilBrown ---- - mdmon.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/mdmon.c b/mdmon.c -index b84d4d9..21221cd 100644 ---- a/mdmon.c -+++ b/mdmon.c -@@ -232,6 +232,7 @@ static int make_control_sock(char *devname) - - addr.sun_family = PF_LOCAL; - strcpy(addr.sun_path, path); -+ umask(077); /* ensure no world write access */ - if (bind(sfd, &addr, sizeof(addr)) < 0) { - close(sfd); - return -1; --- -2.0.0 - -- cgit v1.2.3