diff options
author | Neil Brown <neilb@suse.de> | 2008-04-28 16:29:12 +1000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2008-04-28 16:29:12 +1000 |
commit | 2cdb64897d4fe33a11af13c6356dcd338c561e77 (patch) | |
tree | 9eadf9a59d00d3bed84c96701c878c6722ad4f66 /Incremental.c | |
parent | 142cb9e181b876b399c548567dad5e011ff3d0dc (diff) | |
download | mdadm-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.c | 1 |
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) |