summaryrefslogtreecommitdiffstats
path: root/Incremental.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2008-04-28 16:29:12 +1000
committerNeil Brown <neilb@suse.de>2008-04-28 16:29:12 +1000
commit2cdb64897d4fe33a11af13c6356dcd338c561e77 (patch)
tree9eadf9a59d00d3bed84c96701c878c6722ad4f66 /Incremental.c
parent142cb9e181b876b399c548567dad5e011ff3d0dc (diff)
downloadmdadm-2cdb64897d4fe33a11af13c6356dcd338c561e77.tar.gz
mdadm-2cdb64897d4fe33a11af13c6356dcd338c561e77.tar.xz
mdadm-2cdb64897d4fe33a11af13c6356dcd338c561e77.zip
Fix for segfault when reading /proc/mdstat
Some kernel versions don't put a space between 'active' and '(auto-read-only)' in /proc/mdstat. This causes a parsing problem leaving 'level' set to NULL which causes a crash. So synthesise a space there if it is missing, and check for 'level' to be NULL and don't de-ref if it is.
Diffstat (limited to 'Incremental.c')
-rw-r--r--Incremental.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/Incremental.c b/Incremental.c
index ab37ef0..4c6a2a7 100644
--- a/Incremental.c
+++ b/Incremental.c
@@ -332,6 +332,7 @@ int Incremental(char *devname, int verbose, int runstop,
struct supertype *st2;
sra = sysfs_read(mdfd, devnum, (GET_VERSION | GET_DEVS |
GET_STATE));
+
if (sra->array.major_version != st->ss->major ||
sra->array.minor_version != st->minor_version) {
if (verbose >= 0)