lkml.org 
[lkml]   [2021]   [Sep]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.9 14/17] ext4: Make sure quota files are not grabbed accidentally
    Date
    From: Jan Kara <jack@suse.cz>

    [ Upstream commit bd2c38cf1726ea913024393a0d11f2e2a3f4c180 ]

    If ext4 filesystem is corrupted so that quota files are linked from
    directory hirerarchy, bad things can happen. E.g. quota files can get
    corrupted or deleted. Make sure we are not grabbing quota file inodes
    when we expect normal inodes.

    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Link: https://lore.kernel.org/r/20210812133122.26360-1-jack@suse.cz
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/ext4/inode.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
    index 79c067f74253..6459bdbbc3f2 100644
    --- a/fs/ext4/inode.c
    +++ b/fs/ext4/inode.c
    @@ -4489,6 +4489,7 @@ struct inode *__ext4_iget(struct super_block *sb, unsigned long ino,
    struct ext4_iloc iloc;
    struct ext4_inode *raw_inode;
    struct ext4_inode_info *ei;
    + struct ext4_super_block *es = EXT4_SB(sb)->s_es;
    struct inode *inode;
    journal_t *journal = EXT4_SB(sb)->s_journal;
    long ret;
    @@ -4499,9 +4500,12 @@ struct inode *__ext4_iget(struct super_block *sb, unsigned long ino,
    projid_t i_projid;

    if ((!(flags & EXT4_IGET_SPECIAL) &&
    - (ino < EXT4_FIRST_INO(sb) && ino != EXT4_ROOT_INO)) ||
    + ((ino < EXT4_FIRST_INO(sb) && ino != EXT4_ROOT_INO) ||
    + ino == le32_to_cpu(es->s_usr_quota_inum) ||
    + ino == le32_to_cpu(es->s_grp_quota_inum) ||
    + ino == le32_to_cpu(es->s_prj_quota_inum))) ||
    (ino < EXT4_ROOT_INO) ||
    - (ino > le32_to_cpu(EXT4_SB(sb)->s_es->s_inodes_count))) {
    + (ino > le32_to_cpu(es->s_inodes_count))) {
    if (flags & EXT4_IGET_HANDLE)
    return ERR_PTR(-ESTALE);
    __ext4_error(sb, function, line,
    --
    2.30.2
    \
     
     \ /
      Last update: 2021-09-10 03:07    [W:4.233 / U:1.324 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site