This bug is missing log files that will aid in diagnosing the problem.
While running an Ubuntu kernel (not a mainline or third-party kernel)
please enter the following command in a terminal window:

apport-collect 1789435

and then change the status of the bug to 'Confirmed'.

If, due to the nature of the issue you have encountered, you are unable
to run this command, please add a comment stating that fact and change
the bug status to 'Confirmed'.

This change has been made by an automated script, maintained by the
Ubuntu Kernel Team.

** Changed in: linux (Ubuntu)
       Status: New => Incomplete

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1789435

Title:
  kernel 3.13.0-157+158: ext4: wrong error message »invalid block
  bitmap«

Status in linux package in Ubuntu:
  Incomplete

Bug description:
  W're getting the »invalid block bitmap« error since kernel 3.13.0-157

  see 
  
https://github.com/torvalds/linux/commit/22be37acce25d66ecf6403fc8f44df9c5ded2372

  and in this diff the error is within
  »if (offset < 0 || EXT4_B2C(sbi, offset) >= sb->s_blocksize ||«

  Kind regards, J. Barth

  *** linux_3.13.0-155.205.diff 2018-08-28 14:56:04.357521118 +0200
  --- linux_3.13.0-157.207.diff 2018-08-28 14:48:27.168863046 +0200
  ***************
  *** 31,37 ****
     }
     
     /* Return the number of free blocks in a block group.  It is used when
  ! @@ -419,11 +420,15 @@
        }
        ext4_lock_group(sb, block_group);
        if (desc->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) {
  --- 31,102 ----
     }
     
     /* Return the number of free blocks in a block group.  It is used when
  ! @@ -307,6 +308,7 @@
  !                                         ext4_group_t block_group,
  !                                         struct buffer_head *bh)
  !  {
  ! +   struct ext4_sb_info *sbi = EXT4_SB(sb);
  !     ext4_grpblk_t offset;
  !     ext4_grpblk_t next_zero_bit;
  !     ext4_fsblk_t blk;
  ! @@ -326,24 +328,30 @@
  !     /* check whether block bitmap block number is set */
  !     blk = ext4_block_bitmap(sb, desc);
  !     offset = blk - group_first_block;
  ! -   if (!ext4_test_bit(offset, bh->b_data))
  ! +   if (offset < 0 || EXT4_B2C(sbi, offset) >= sb->s_blocksize ||
  ! +       !ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data))
  !             /* bad block bitmap */
  !             return blk;
  !  
  !     /* check whether the inode bitmap block number is set */
  !     blk = ext4_inode_bitmap(sb, desc);
  !     offset = blk - group_first_block;
  ! -   if (!ext4_test_bit(offset, bh->b_data))
  ! +   if (offset < 0 || EXT4_B2C(sbi, offset) >= sb->s_blocksize ||
  ! +       !ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data))
  !             /* bad block bitmap */
  !             return blk;
  !  
  !     /* check whether the inode table block number is set */
  !     blk = ext4_inode_table(sb, desc);
  !     offset = blk - group_first_block;
  ! +   if (offset < 0 || EXT4_B2C(sbi, offset) >= sb->s_blocksize ||
  ! +       EXT4_B2C(sbi, offset + sbi->s_itb_per_group) >= sb->s_blocksize)
  ! +           return blk;
  !     next_zero_bit = ext4_find_next_zero_bit(bh->b_data,
  ! -                           offset + EXT4_SB(sb)->s_itb_per_group,
  ! -                           offset);
  ! -   if (next_zero_bit < offset + EXT4_SB(sb)->s_itb_per_group)
  ! +                   EXT4_B2C(sbi, offset + EXT4_SB(sb)->s_itb_per_group),
  ! +                   EXT4_B2C(sbi, offset));
  ! +   if (next_zero_bit <
  ! +       EXT4_B2C(sbi, offset + EXT4_SB(sb)->s_itb_per_group))
  !             /* bad bitmap for inode tables */
  !             return blk;
  !     return 0;
  ! @@ -394,6 +402,7 @@
  !  ext4_read_block_bitmap_nowait(struct super_block *sb, ext4_group_t 
block_group)
  !  {
  !     struct ext4_group_desc *desc;
  ! +   struct ext4_sb_info *sbi = EXT4_SB(sb);
  !     struct buffer_head *bh;
  !     ext4_fsblk_t bitmap_blk;
  !  
  ! @@ -401,6 +410,12 @@
  !     if (!desc)
  !             return NULL;
  !     bitmap_blk = ext4_block_bitmap(sb, desc);
  ! +   if ((bitmap_blk <= le32_to_cpu(sbi->s_es->s_first_data_block)) ||
  ! +       (bitmap_blk >= ext4_blocks_count(sbi->s_es))) {
  ! +           ext4_error(sb, "Invalid block bitmap block %llu in "
  ! +                      "block_group %u", bitmap_blk, block_group);
  ! +           return ERR_PTR(-EIO);
  ! +   }
  !     bh = sb_getblk(sb, bitmap_blk);
  !     if (unlikely(!bh)) {
  !             ext4_error(sb, "Cannot get buffer for block bitmap - "
  ! @@ -419,11 +434,15 @@
        }
        ext4_lock_group(sb, block_group);
        if (desc->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) {

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1789435/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to