OSDN Git Service

Fix kernel panic when boot up nougat-x86 android-x86-7.1-r1 android-x86-7.1-r2 android-x86-7.1-r3 android-x86-7.1-r4 android-x86-7.1-r5
authorzhang sanshan <sanshan.zhang@nxp.com>
Wed, 26 Oct 2016 13:03:37 +0000 (21:03 +0800)
committerChih-Wei Huang <cwhuang@linux.org.tw>
Fri, 9 Jun 2017 02:41:14 +0000 (10:41 +0800)
Kernel will panic with below log after factory reset:
EXT4-fs error (device mmcblk1p4): ext4_validate_block_bitmap:380: comm init: bg 17: block 557056: invalid block bitmap
Aborting journal on device mmcblk1p4-8.
Kernel panic - not syncing: EXT4-fs (device mmcblk1p4): panic forced after error
Rebooting in 5 seconds.

The root cause is the data type conversion issue on 32 bit devices.
When a 32-bit data  mutiply a 32-bit data, it will still get a 32-bit data.
The 64-bit offset will be cut to 32 bit.

Signed-off-by: zhang sanshan <sanshan.zhang@nxp.com>
ext4_utils/ext4_utils.c

index fba4f9f..49e552e 100644 (file)
@@ -177,7 +177,7 @@ static void block_device_write_sb(int fd)
        /* write out the backup superblocks */
        for (i = 1; i < aux_info.groups; i++) {
                if (ext4_bg_has_super_block(i)) {
-                       offset = info.block_size * (aux_info.first_data_block
+                       offset = (unsigned long long)info.block_size * (aux_info.first_data_block
                                + i * info.blocks_per_group);
                        write_sb(fd, offset, aux_info.backup_sb[i]);
                }