rpms/mdadm/F-12 mdadm-3.0-mdmon-dev-.mdadm.patch, NONE, 1.1 mdadm-3.0-rh526761.patch, NONE, 1.1 mdadm-3.0-calloc.patch, 1.1, NONE

Hans de Goede jwrdegoede at fedoraproject.org
Fri Oct 2 19:50:20 UTC 2009


Author: jwrdegoede

Update of /cvs/extras/rpms/mdadm/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv5046

Added Files:
	mdadm-3.0-mdmon-dev-.mdadm.patch mdadm-3.0-rh526761.patch 
Removed Files:
	mdadm-3.0-calloc.patch 
Log Message:
* Fri Oct  2 2009 Hans de Goede <hdegoede at redhat.com> - 3.0.2-1
- New upstream release 3.0.2
- Add a patch fixing mdadm --detail -export segfaults (bz526761, bz523862)
- Add a patch making mdmon store its state under /dev/.mdadm for initrd
  mdmon, rootfs mdmon handover
- Restart mdmon from initscript (when running) for rootfs mdmon handover


mdadm-3.0-mdmon-dev-.mdadm.patch:
 mdmon.c |   17 ++++++++---------
 msg.c   |    2 +-
 util.c  |    4 ++--
 3 files changed, 11 insertions(+), 12 deletions(-)

--- NEW FILE mdadm-3.0-mdmon-dev-.mdadm.patch ---
diff -up mdadm-3.0/mdmon.c~ mdadm-3.0/mdmon.c
--- mdadm-3.0/mdmon.c~	2009-09-19 14:22:23.000000000 +0200
+++ mdadm-3.0/mdmon.c	2009-09-19 14:22:23.000000000 +0200
@@ -124,7 +124,7 @@ int make_pidfile(char *devname, int o_ex
 	if (sigterm)
 		return -1;
 
-	sprintf(path, "/var/run/mdadm/%s.pid", devname);
+	sprintf(path, "/dev/.mdadm/%s.pid", devname);
 
 	fd = open(path, O_RDWR|O_CREAT|o_excl, 0600);
 	if (fd < 0)
@@ -157,7 +157,7 @@ static void try_kill_monitor(char *devna
 	pid_t pid;
 	struct mdstat_ent *mdstat;
 
-	sprintf(buf, "/var/run/mdadm/%s.pid", devname);
+	sprintf(buf, "/dev/.mdadm/%s.pid", devname);
 	fd = open(buf, O_RDONLY);
 	if (fd < 0)
 		return;
@@ -207,9 +207,9 @@ void remove_pidfile(char *devname)
 	if (sigterm)
 		return;
 
-	sprintf(buf, "/var/run/mdadm/%s.pid", devname);
+	sprintf(buf, "/dev/.mdadm/%s.pid", devname);
 	unlink(buf);
-	sprintf(buf, "/var/run/mdadm/%s.sock", devname);
+	sprintf(buf, "/dev/.mdadm/%s.sock", devname);
 	unlink(buf);
 }
 
@@ -223,7 +223,7 @@ int make_control_sock(char *devname)
 	if (sigterm)
 		return -1;
 
-	sprintf(path, "/var/run/mdadm/%s.sock", devname);
+	sprintf(path, "/dev/.mdadm/%s.sock", devname);
 	unlink(path);
 	sfd = socket(PF_LOCAL, SOCK_STREAM, 0);
 	if (sfd < 0)
@@ -478,11 +478,10 @@ int mdmon(char *devname, int devnum, int
 	}
 
 	/* If this fails, we hope it already exists 
-	 * pid file lives in /var/run/mdadm/mdXX.pid
+	 * pid file lives in /dev/.mdadm/mdXX.pid
 	 */
-	mkdir("/var", 0600);
-	mkdir("/var/run", 0600);
-	mkdir("/var/run/mdadm", 0600);
+	mkdir("/dev", 0700);
+	mkdir("/dev/.mdadm", 0700);
 	ignore = chdir("/");
 	if (make_pidfile(container->devname, O_EXCL) < 0) {
 		if (ping_monitor(container->devname) == 0) {
diff -up mdadm-3.0/msg.c~ mdadm-3.0/msg.c
--- mdadm-3.0/msg.c~	2009-09-11 08:10:24.000000000 +0200
+++ mdadm-3.0/msg.c	2009-09-19 15:31:27.000000000 +0200
@@ -147,7 +147,7 @@ int connect_monitor(char *devname)
 	int pos;
 	char *c;
 
-	pos = sprintf(path, "/var/run/mdadm/");
+	pos = sprintf(path, "/dev/.mdadm/");
 	if (is_subarray(devname)) {
 		devname++;
 		c = strchr(devname, '/');
diff -up mdadm-3.0/util.c~ mdadm-3.0/util.c
--- mdadm-3.0/util.c~	2009-09-19 14:22:23.000000000 +0200
+++ mdadm-3.0/util.c	2009-09-19 15:32:22.000000000 +0200
@@ -1206,7 +1206,7 @@ int mdmon_running(int devnum)
 	char pid[10];
 	int fd;
 	int n;
-	sprintf(path, "/var/run/mdadm/%s.pid", devnum2devname(devnum));
+	sprintf(path, "/dev/.mdadm/%s.pid", devnum2devname(devnum));
 	fd = open(path, O_RDONLY, 0);
 
 	if (fd < 0)
@@ -1226,7 +1226,7 @@ int signal_mdmon(int devnum)
 	char pid[10];
 	int fd;
 	int n;
-	sprintf(path, "/var/run/mdadm/%s.pid", devnum2devname(devnum));
+	sprintf(path, "/dev/.mdadm/%s.pid", devnum2devname(devnum));
 	fd = open(path, O_RDONLY, 0);
 
 	if (fd < 0)

mdadm-3.0-rh526761.patch:
 mapfile.c |   15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

--- NEW FILE mdadm-3.0-rh526761.patch ---
From: NeilBrown <neilb at suse.de>
Date: Thu, 1 Oct 2009 02:51:04 +0000 (+1000)
Subject: Fix null-dereference in set_member_info
X-Git-Url: http://neil.brown.name/git?p=mdadm;a=commitdiff_plain;h=2b9aa337af7291d3f141322da96c9f667c99d53c

Fix null-dereference in set_member_info

set_member_info would try to dereference ->metadata_version, without
checking that it isn't NULL.

Signed-off-by: NeilBrown <neilb at suse.de>
---

diff --git a/mapfile.c b/mapfile.c
index a3038be..ed59db5 100644
--- a/mapfile.c
+++ b/mapfile.c
@@ -303,19 +303,22 @@ struct map_ent *map_by_name(struct map_ent **map, char *name)
  */
 static void set_member_info(struct supertype *st, struct mdstat_ent *ent)
 {
-	char version[strlen(ent->metadata_version)+1];
 
 	st->subarray[0] = '\0';
 
-	if (strncmp(ent->metadata_version, "external:", 9) != 0)
+	if (ent->metadata_version == NULL ||
+	    strncmp(ent->metadata_version, "external:", 9) != 0)
 		return;
 
-	strcpy(version, ent->metadata_version);
-
-	if (is_subarray(&version[9])) {
-		char *subarray = strrchr(version, '/');
+	if (is_subarray(&ent->metadata_version[9])) {
+		char version[strlen(ent->metadata_version)+1];
+		char *subarray;
 		char *name = &version[10];
 
+		strcpy(version, ent->metadata_version);
+		subarray = strrchr(version, '/');
+		name = &version[10];
+
 		if (!subarray)
 			return;
 		*subarray++ = '\0';


--- mdadm-3.0-calloc.patch DELETED ---




More information about the fedora-extras-commits mailing list