mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-09-21 20:22:13 +08:00
ext4: implement filesystem specific alloc_inode in unit test
We expect inode with ext4_info_info type as following: mbt_kunit_init mbt_mb_init ext4_mb_init ext4_mb_init_backend sbi->s_buddy_cache = new_inode(sb); EXT4_I(sbi->s_buddy_cache)->i_disksize = 0; Implement alloc_inode ionde with ext4_inode_info type to avoid out-of-bounds write. Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com> Reported-by: Guenter Roeck <linux@roeck-us.net> Tested-by: Guenter Roeck <linux@roeck-us.net> Link: https://lore.kernel.org/r/20240322165518.8147-1-shikemeng@huaweicloud.com Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
0a46ef2347
commit
a11adf7be9
@ -30,7 +30,31 @@ struct mbt_ext4_super_block {
|
||||
#define MBT_CTX(_sb) (&MBT_SB(_sb)->mbt_ctx)
|
||||
#define MBT_GRP_CTX(_sb, _group) (&MBT_CTX(_sb)->grp_ctx[_group])
|
||||
|
||||
static struct inode *mbt_alloc_inode(struct super_block *sb)
|
||||
{
|
||||
struct ext4_inode_info *ei;
|
||||
|
||||
ei = kmalloc(sizeof(struct ext4_inode_info), GFP_KERNEL);
|
||||
if (!ei)
|
||||
return NULL;
|
||||
|
||||
INIT_LIST_HEAD(&ei->i_orphan);
|
||||
init_rwsem(&ei->xattr_sem);
|
||||
init_rwsem(&ei->i_data_sem);
|
||||
inode_init_once(&ei->vfs_inode);
|
||||
ext4_fc_init_inode(&ei->vfs_inode);
|
||||
|
||||
return &ei->vfs_inode;
|
||||
}
|
||||
|
||||
static void mbt_free_inode(struct inode *inode)
|
||||
{
|
||||
kfree(EXT4_I(inode));
|
||||
}
|
||||
|
||||
static const struct super_operations mbt_sops = {
|
||||
.alloc_inode = mbt_alloc_inode,
|
||||
.free_inode = mbt_free_inode,
|
||||
};
|
||||
|
||||
static void mbt_kill_sb(struct super_block *sb)
|
||||
|
Loading…
Reference in New Issue
Block a user