From: Greg Kroah-Hartman Date: Sun, 23 Jan 2022 17:19:17 +0000 (+0100) Subject: 4.14-stable patches X-Git-Tag: v4.4.300~104 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5a926cda79f8c7ab07448883b1be07c12ac8fb98;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: ext4-make-sure-quota-gets-properly-shutdown-on-error.patch --- diff --git a/queue-4.14/ext4-make-sure-quota-gets-properly-shutdown-on-error.patch b/queue-4.14/ext4-make-sure-quota-gets-properly-shutdown-on-error.patch new file mode 100644 index 00000000000..4b13f606d5d --- /dev/null +++ b/queue-4.14/ext4-make-sure-quota-gets-properly-shutdown-on-error.patch @@ -0,0 +1,51 @@ +From 15fc69bbbbbc8c72e5f6cc4e1be0f51283c5448e Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Thu, 7 Oct 2021 17:53:35 +0200 +Subject: ext4: make sure quota gets properly shutdown on error + +From: Jan Kara + +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 +Cc: stable@kernel.org +Link: https://lore.kernel.org/r/20211007155336.12493-2-jack@suse.cz +Signed-off-by: Theodore Ts'o +Signed-off-by: Greg Kroah-Hartman +--- + fs/ext4/super.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +--- a/fs/ext4/super.c ++++ b/fs/ext4/super.c +@@ -5678,10 +5678,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; + +@@ -5701,7 +5698,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; + } + diff --git a/queue-4.14/series b/queue-4.14/series index 0d2e4c02504..6c12f04c3fe 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -150,3 +150,4 @@ serial-fix-incorrect-rs485-polarity-on-uart-open.patch cputime-cpuacct-include-guest-time-in-user-time-in-cpuacct.stat.patch iwlwifi-mvm-increase-the-scan-timeout-guard-to-30-seconds.patch drm-etnaviv-limit-submit-sizes.patch +ext4-make-sure-quota-gets-properly-shutdown-on-error.patch