Patch "quota: Properly disable quotas when add_dquot_ref() fails" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    quota: Properly disable quotas when add_dquot_ref() fails

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     quota-properly-disable-quotas-when-add_dquot_ref-fai.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 39ba8c7aa3d9f723b546e8f604236ce6c9096e2c
Author: Jan Kara <jack@xxxxxxx>
Date:   Mon Jun 5 22:07:30 2023 +0800

    quota: Properly disable quotas when add_dquot_ref() fails
    
    [ Upstream commit 6a4e3363792e30177cc3965697e34ddcea8b900b ]
    
    When add_dquot_ref() fails (usually due to IO error or ENOMEM), we want
    to disable quotas we are trying to enable. However dquot_disable() call
    was passed just the flags we are enabling so in case flags ==
    DQUOT_USAGE_ENABLED dquot_disable() call will just fail with EINVAL
    instead of properly disabling quotas. Fix the problem by always passing
    DQUOT_LIMITS_ENABLED | DQUOT_USAGE_ENABLED to dquot_disable() in this
    case.
    
    Reported-and-tested-by: Ye Bin <yebin10@xxxxxxxxxx>
    Reported-by: syzbot+e633c79ceaecbf479854@xxxxxxxxxxxxxxxxxxxxxxxxx
    Signed-off-by: Jan Kara <jack@xxxxxxx>
    Message-Id: <20230605140731.2427629-2-yebin10@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index 1d652af48f0b1..44175f37bfeb5 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -2415,7 +2415,8 @@ int dquot_load_quota_sb(struct super_block *sb, int type, int format_id,
 
 	error = add_dquot_ref(sb, type);
 	if (error)
-		dquot_disable(sb, type, flags);
+		dquot_disable(sb, type,
+			      DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED);
 
 	return error;
 out_fmt:



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux