lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 269/320] ext4: make sure quota gets properly shutdown on error
    Date
    From: Jan Kara <jack@suse.cz>

    commit 15fc69bbbbbc8c72e5f6cc4e1be0f51283c5448e upstream.

    When we hit an error when enabling quotas and setting inode flags, we do
    not properly shutdown quota subsystem despite returning error from
    Q_QUOTAON quotactl. This can lead to some odd situations like kernel
    using quota file while it is still writeable for userspace. Make sure we
    properly cleanup the quota subsystem in case of error.

    Signed-off-by: Jan Kara <jack@suse.cz>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/r/20211007155336.12493-2-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/ext4/super.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    --- a/fs/ext4/super.c
    +++ b/fs/ext4/super.c
    @@ -5912,10 +5912,7 @@ static int ext4_quota_on(struct super_bl

    lockdep_set_quota_inode(path->dentry->d_inode, I_DATA_SEM_QUOTA);
    err = dquot_quota_on(sb, type, format_id, path);
    - if (err) {
    - lockdep_set_quota_inode(path->dentry->d_inode,
    - I_DATA_SEM_NORMAL);
    - } else {
    + if (!err) {
    struct inode *inode = d_inode(path->dentry);
    handle_t *handle;

    @@ -5935,7 +5932,12 @@ static int ext4_quota_on(struct super_bl
    ext4_journal_stop(handle);
    unlock_inode:
    inode_unlock(inode);
    + if (err)
    + dquot_quota_off(sb, type);
    }
    + if (err)
    + lockdep_set_quota_inode(path->dentry->d_inode,
    + I_DATA_SEM_NORMAL);
    return err;
    }


    \
     
     \ /
      Last update: 2022-01-24 21:09    [W:12.596 / U:21.328 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site