- /* version 0 at the end of the device */
- sboff = (size & ~(MD_RESERVED_BYTES - 1)) - MD_RESERVED_BYTES;
- if (volume_id_probe_linux_raid0(id, off + sboff, size) == 0)
- return 0;
-
- /* version 1.0 at the end of the device */
- sboff = (size & ~(0x1000 - 1)) - 0x2000;
- if (volume_id_probe_linux_raid1(id, off + sboff, size) == 0) {
- strcpy(id->type_version, "1.0");
- return 0;
+ if (size > MD_RESERVED_BYTES) {
+ /* version 0 at the end of the device */
+ sboff = (size & ~(MD_RESERVED_BYTES - 1)) - MD_RESERVED_BYTES;
+ if (volume_id_probe_linux_raid0(id, off + sboff, size) == 0)
+ return 0;
+
+ /* version 1.0 at the end of the device */
+ sboff = (size & ~(0x1000 - 1)) - 0x2000;
+ if (volume_id_probe_linux_raid1(id, off + sboff, size) == 0) {
+ strcpy(id->type_version, "1.0");
+ return 0;
+ }