mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 17:09:10 -07:00
sys-fs/mdadm: Removed old.
Package-Manager: Portage-2.3.24, Repoman-2.3.6
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
DIST mdadm-3.3.1.tar.xz 407964 BLAKE2B 7494f6431729c3278412080aa3db7676a02d963148e5be7522f3de3e73acb1af9bf9e0be0042e13ee0c7524155e772a252a924eb4965c430d6918dc37aede246 SHA512 46fc1889e97d2d14b72ac26ee07eb4301467dc4a0e838ba89920253484fcd443749f3afccb3d792f7e468b20021d50dbc29dda7033d9b5a8fbaee664200f1981
|
||||
DIST mdadm-3.4.tar.xz 422704 BLAKE2B 0e8251fefb2db853a921215a07f1f7e70dfcd6650c20493cb487d4ce32cb609fe8191297046161e62f802c75150e6628b52192bb466d72c4cabfb1bcfae09839 SHA512 5de06f3a2b83333e5346a1e858b15e76f75a13a1d5c5f2032fecc6eb167454b282e12ee111ac2abec778e058ec9554708ac317a476778328546603618e6f70f7
|
||||
DIST mdadm-4.0.tar.xz 430780 BLAKE2B f08a67452398c864d73c78e2a7258d89c5c81b83dd136d4cd7e31e46b22d75ff67ecf553dc22f55dca418409daded51a399728dfdbd36039e828cad3233774e6 SHA512 12fb26e6b9c1912698defa406e5e47a7ca8d68d4a9aa7acdc9b463ee2d4a37fc6ecef6beb5395ff619018c3f6bdb6d8c573060d027707540f645ad2265170e8b
|
||||
DIST mdadm-4.1-rc1.tar.xz 440336 BLAKE2B af2e4b9e9fd7f75e92d30a29b0a240e4b078e34f3906a583cf10cda1c89717a27d0044d1ba72e9d41b96becda370a423f880c09cd5f2d783715bf2519e401b3c SHA512 07d75ba511a252de95356bc63e480b3c196ad0715d719f75599d1fa2995d649ea86a63f74aee7558316d728ebaae2c87d86806089cba735532e1c39641baf727
|
||||
DIST mdadm_3.3-2.debian.tar.gz 127889 BLAKE2B f7cfe5e59e16bf71561f672e3c7f7a480658919665490a0b6c32b47979050880b51e481c4f0869efdeb791c8bd34d3db5d4034b40bbf9b55f5b8bbdf73040618 SHA512 92e4c403542caba4b9afb870ba803e6bc7ade143b27efdc27e03b3407f322722a635457cce9e8c195a3ecd7cbce66fdebdd6046fc4f36836e56e27d5d838c037
|
||||
DIST mdadm_3.3.4-1.1.debian.tar.xz 86312 BLAKE2B 367a9ed4b16b73a63b613e8029934ee8fbb056e33ca621e92964408ac9a3b3d107af03b657dbfe572f63150e5438879f6dd29a7e7cca1599b213ba135249e78d SHA512 ea9b34a9952e1ff836cb931c7eef0ae0c44e3f4d46162c7a7eca24936d6f7168e99d67749b3100bc68ebadc8f256e4833d42da48c531cf71e6e8f3100911828f
|
||||
DIST mdadm_3.4-4.debian.tar.xz 81200 BLAKE2B 393bac2310139788935ced77b736d60d11f58e86349990034367af5460483e97239eef5a6622405b68a7aa6f65059bc5692518172e422c3596ab879527619952 SHA512 86a9edb8f29931fdfa40037d535ca80f0bf59539fe1ef16f2639e666a5ac1bd90ec617ec1635080ae62a02f7986a6e10c97dce5389555ab7d417885f216c0f93
|
||||
DIST mdadm_4.0-2.debian.tar.xz 81844 BLAKE2B f8b33e27dacfa83292cc0632dd2d9a83b9d5a69e5360cdfb7494b489400504f20c7ab213ec455dfefc68d5a7f8a48fb2085710fe420b9791df9f8ebbe05d1a10 SHA512 a118df3edbe492e28dda054672a0adfe2c1ce276655f70509c2f24082aecd5193ade84ca3f0ee93280f646ee6a1636d703607046b7e27388086627bed911037a
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
From 1f17f96b538793a0e665e471f602c6fa490ec167 Mon Sep 17 00:00:00 2001
|
||||
From: NeilBrown <neilb@suse.de>
|
||||
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 <vberg@ioactive.com>
|
||||
Signed-off-by: NeilBrown <neilb@suse.de>
|
||||
---
|
||||
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
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
From 13ffbe89b6103c146c08eb1c9a70833306c8322b Mon Sep 17 00:00:00 2001
|
||||
From: Pawel Baldysiak <pawel.baldysiak@intel.com>
|
||||
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 <pawel.baldysiak@intel.com>
|
||||
Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
|
||||
Signed-off-by: NeilBrown <neilb@suse.de>
|
||||
---
|
||||
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
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
From e339dba2a1744dc6860a58e286ded39fc993c2db Mon Sep 17 00:00:00 2001
|
||||
From: Pawel Baldysiak <pawel.baldysiak@intel.com>
|
||||
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 <pawel.baldysiak@intel.com>
|
||||
Signed-off-by: NeilBrown <neilb@suse.de>
|
||||
---
|
||||
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
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
From 6d8d290a2f09a3bfd9e44f382ae5daea128772f7 Mon Sep 17 00:00:00 2001
|
||||
From: NeilBrown <neilb@suse.de>
|
||||
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 <neilb@suse.de>
|
||||
---
|
||||
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
|
||||
|
||||
@@ -1,128 +0,0 @@
|
||||
From 095b8088fa99ad1195d1aba03af2aa561b4a6379 Mon Sep 17 00:00:00 2001
|
||||
From: NeilBrown <neilb@suse.de>
|
||||
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 <vberg@ioactive.com>
|
||||
Signed-off-by: NeilBrown <neilb@suse.de>
|
||||
---
|
||||
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
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
From 616f197f9d6d044afb9e27ddc9cd087d21d610f0 Mon Sep 17 00:00:00 2001
|
||||
From: NeilBrown <neilb@suse.de>
|
||||
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 <neilb@suse.de>
|
||||
---
|
||||
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
|
||||
|
||||
@@ -1,119 +0,0 @@
|
||||
From 5fe6f031d9a21a935f0ef1b1fbdb314b53f2199f Mon Sep 17 00:00:00 2001
|
||||
From: NeilBrown <neilb@suse.de>
|
||||
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 <neilb@suse.de>
|
||||
---
|
||||
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
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
From 120ec6f7b96455e42bdfa9131c0c9026c57eaf19 Mon Sep 17 00:00:00 2001
|
||||
From: NeilBrown <neilb@suse.de>
|
||||
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 <vberg@ioactive.com>
|
||||
Signed-off-by: NeilBrown <neilb@suse.de>
|
||||
---
|
||||
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
|
||||
|
||||
@@ -1,95 +0,0 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=4
|
||||
inherit eutils flag-o-matic multilib systemd toolchain-funcs udev
|
||||
|
||||
DESCRIPTION="Tool for running RAID systems - replacement for the raidtools"
|
||||
HOMEPAGE="http://neil.brown.name/blog/mdadm"
|
||||
DEB_PR=2
|
||||
SRC_URI="mirror://kernel/linux/utils/raid/mdadm/${P}.tar.xz
|
||||
mirror://debian/pool/main/m/mdadm/${PN}_3.3-${DEB_PR}.debian.tar.gz"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 sparc x86"
|
||||
IUSE="static"
|
||||
|
||||
DEPEND="virtual/pkgconfig
|
||||
app-arch/xz-utils"
|
||||
RDEPEND=">=sys-apps/util-linux-2.16"
|
||||
|
||||
# The tests edit values in /proc and run tests on software raid devices.
|
||||
# Thus, they shouldn't be run on systems with active software RAID devices.
|
||||
RESTRICT="test"
|
||||
|
||||
mdadm_emake() {
|
||||
emake \
|
||||
PKG_CONFIG="$(tc-getPKG_CONFIG)" \
|
||||
CC="$(tc-getCC)" \
|
||||
CWFLAGS="-Wall" \
|
||||
CXFLAGS="${CFLAGS}" \
|
||||
UDEVDIR="$(get_udevdir)" \
|
||||
SYSTEMD_DIR="$(systemd_get_unitdir)" \
|
||||
"$@"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# These are important bugfixes from upstream git after 3.3.1 release,
|
||||
# and before and including 17 Jul 2014:
|
||||
epatch \
|
||||
"${FILESDIR}"/${P}-Makefile-install-mdadm-grow-continue-.service.patch \
|
||||
"${FILESDIR}"/${P}-Grow-fix-removal-of-line-in-wrong-case.patch \
|
||||
"${FILESDIR}"/${P}-IMSM-use-strcpy-rather-than-pointless-strncpy.patch \
|
||||
"${FILESDIR}"/${P}-mdmon-ensure-Unix-domain-socket-is-created-with-safe.patch \
|
||||
"${FILESDIR}"/${P}-mdmon-allow-prepare_update-to-report-failure.patch \
|
||||
"${FILESDIR}"/${P}-DDF-validate-metadata_update-size-before-using-it.patch \
|
||||
"${FILESDIR}"/${P}-IMSM-validate-metadata_update-size-before-using-it.patch \
|
||||
"${FILESDIR}"/${P}-Grow-Do-not-try-to-restart-if-reshape-is-running.patch
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
use static && append-ldflags -static
|
||||
mdadm_emake all mdassemble
|
||||
}
|
||||
|
||||
src_test() {
|
||||
mdadm_emake test
|
||||
|
||||
sh ./test || die
|
||||
}
|
||||
|
||||
src_install() {
|
||||
# Use split lines because of bug #517218
|
||||
mdadm_emake DESTDIR="${D}" install
|
||||
mdadm_emake DESTDIR="${D}" install-systemd
|
||||
into /
|
||||
dosbin mdassemble
|
||||
dodoc ChangeLog INSTALL TODO README* ANNOUNCE-${PV}
|
||||
|
||||
insinto /etc
|
||||
newins mdadm.conf-example mdadm.conf
|
||||
newinitd "${FILESDIR}"/mdadm.rc mdadm
|
||||
newconfd "${FILESDIR}"/mdadm.confd mdadm
|
||||
newinitd "${FILESDIR}"/mdraid.rc mdraid
|
||||
newconfd "${FILESDIR}"/mdraid.confd mdraid
|
||||
|
||||
# From the Debian patchset
|
||||
into /usr
|
||||
dodoc "${WORKDIR}"/debian/README.checkarray
|
||||
dosbin "${WORKDIR}"/debian/checkarray
|
||||
|
||||
insinto /etc/cron.weekly
|
||||
newins "${FILESDIR}"/mdadm.weekly mdadm
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
if ! systemd_is_booted; then
|
||||
if [[ -z ${REPLACING_VERSIONS} ]] ; then
|
||||
# Only inform people the first time they install.
|
||||
elog "If you're not relying on kernel auto-detect of your RAID"
|
||||
elog "devices, you need to add 'mdraid' to your 'boot' runlevel:"
|
||||
elog " rc-update add mdraid boot"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user