Comment 5 for bug 518582

Revision history for this message
Kees Cook (kees) wrote :

For a filesystem that fails, can you attach the first 10K of the partition?

sudo dd if=/dev/sda1 of=/tmp/10k.data bs=10k count=1

The minix sanity checks are failing:

                sb = blkid_probe_get_sb(pr, mag, struct minix_super_block);
                if (!sb || sb->s_imap_blocks == 0 || sb->s_zmap_blocks == 0)
                        return -1;

                zones = version == 2 ? sb->s_zones : sb->s_nzones;

                /* sanity checks to be sure that the FS is really minix */
                if (sb->s_imap_blocks * MINIX_BLOCK_SIZE * 8 < sb->s_ninodes + 1)
                        return -1;
                if (sb->s_zmap_blocks * MINIX_BLOCK_SIZE * 8 < zones - sb->s_firstdatazone + 1)
                        return -1;

The data overlaps beyond the start of the ext4 blocks group descriptor, so the value of s_ninodes is not obvious to me.

struct minix_super_block struct ext4_group_desc
        uint16_t s_ninodes; /* before the ext4_group_desc */

        uint16_t s_nzones; __le32 bg_block_bitmap_lo; /* Blocks bitmap block */
        uint16_t s_imap_blocks;

        uint16_t s_zmap_blocks; __le32 bg_inode_bitmap_lo; /* Inodes bitmap block */
        uint16_t s_firstdatazone;

        uint16_t s_log_zone_size; __le32 bg_inode_table_lo; /* Inodes table block */
        uint32_t s_max_size; __le16 bg_free_blocks_count_lo;/* Free blocks count */

        uint16_t s_magic; __le16 bg_free_inodes_count_lo;/* Free inodes count */

...