]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
imsm: verify single sector mpb checksums
authorDan Williams <dan.j.williams@intel.com>
Wed, 25 Feb 2009 01:45:56 +0000 (18:45 -0700)
committerDan Williams <dan.j.williams@intel.com>
Wed, 25 Feb 2009 01:45:56 +0000 (18:45 -0700)
If the mpb is only one sector do not skip the checksum verification.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
super-intel.c

index 388ada1a3d5fa1654e8f2461c220e3bcb52b7229..3f83255ad3f06d2914a3a905731d3ed544785813 100644 (file)
@@ -1779,6 +1779,17 @@ static int load_imsm_mpb(int fd, struct intel_super *super, char *devname)
        sectors = mpb_sectors(anchor) - 1;
        free(anchor);
        if (!sectors) {
+               check_sum = __gen_imsm_checksum(super->anchor);
+               if (check_sum != __le32_to_cpu(super->anchor->check_sum)) {
+                       if (devname)
+                               fprintf(stderr,
+                                       Name ": IMSM checksum %x != %x on %s\n",
+                                       check_sum,
+                                       __le32_to_cpu(super->anchor->check_sum),
+                                       devname);
+                       return 2;
+               }
+
                rc = load_imsm_disk(fd, super, devname, 0);
                if (rc == 0)
                        rc = parse_raid_devices(super);