Skip to contentSkip to conversation

ext4: fast commit recovery path

bug report Dan Carpenter 2 participants 2 messages Nov 30, 2021 – Dec 1, 2021

lore
Share & tools
lore
#0 lore raw

Hello Harshad Shirwadkar,

The patch 8016e29f4362: "ext4: fast commit recovery path" from Oct 15, 2020, leads to the following Smatch static checker warnings:

	fs/ext4/inode.c:4533 __ext4_get_inode_loc_noinmem()
	error: uninitialized symbol 'err_blk'.

	fs/ext4/inode.c:4548 ext4_get_inode_loc()
	error: uninitialized symbol 'err_blk'.

fs/ext4/inode.c

    4523 static int __ext4_get_inode_loc_noinmem(struct inode *inode,
    4524                                         struct ext4_iloc *iloc)
    4525 {
    4526         ext4_fsblk_t err_blk;
    4527         int ret;
    4528 
    4529         ret = __ext4_get_inode_loc(inode->i_sb, inode->i_ino, NULL, iloc,
    4530                                         &err_blk);
    4531 
    4532         if (ret == -EIO)

--> 4533 ext4_error_inode_block(inode, err_blk, EIO,

Only the last return -EIO sets err_blk. The first return -EIO leaves it uninitialized.

    4534                                         "unable to read itable block");
    4535 
    4536         return ret;
    4537 }

regards,
dan carpenter

#1 lore raw

Thanks for the report Dan. This patch -
https://patchwork.ozlabs.org/project/linux-ext4/patch/[email protected]/
should take care of this report.

- Harshad

Quoted 35 lines · Dan Carpenter

Hello Harshad Shirwadkar,

The patch 8016e29f4362: "ext4: fast commit recovery path" from Oct 15, 2020, leads to the following Smatch static checker warnings:

fs/ext4/inode.c:4533 __ext4_get_inode_loc_noinmem()
error: uninitialized symbol 'err_blk'.

fs/ext4/inode.c:4548 ext4_get_inode_loc()
error: uninitialized symbol 'err_blk'.

fs/ext4/inode.c

    4523 static int __ext4_get_inode_loc_noinmem(struct inode *inode,
    4524                                         struct ext4_iloc *iloc)
    4525 {
    4526         ext4_fsblk_t err_blk;
    4527         int ret;
    4528
    4529         ret = __ext4_get_inode_loc(inode->i_sb, inode->i_ino, NULL, iloc,
    4530                                         &err_blk);
    4531
    4532         if (ret == -EIO)

--> 4533 ext4_error_inode_block(inode, err_blk, EIO,

Only the last return -EIO sets err_blk. The first return -EIO leaves it uninitialized.

    4534                                         "unable to read itable block");
    4535
    4536         return ret;
    4537 }

regards,
dan carpenter