lkml.org 
[lkml]   [2019]   [Oct]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.3 332/344] quota: fix wrong condition in is_quota_modification()
    Date
    From: Chao Yu <yuchao0@huawei.com>

    commit 6565c182094f69e4ffdece337d395eb7ec760efc upstream.

    Quoted from
    commit 3da40c7b0898 ("ext4: only call ext4_truncate when size <= isize")

    " At LSF we decided that if we truncate up from isize we shouldn't trim
    fallocated blocks that were fallocated with KEEP_SIZE and are past the
    new i_size. This patch fixes ext4 to do this. "

    And generic/092 of fstest have covered this case for long time, however
    is_quota_modification() didn't adjust based on that rule, so that in
    below condition, we will lose to quota block change:
    - fallocate blocks beyond EOF
    - remount
    - truncate(file_path, file_size)

    Fix it.

    Link: https://lore.kernel.org/r/20190911093650.35329-1-yuchao0@huawei.com
    Fixes: 3da40c7b0898 ("ext4: only call ext4_truncate when size <= isize")
    CC: stable@vger.kernel.org
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    include/linux/quotaops.h | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/include/linux/quotaops.h
    +++ b/include/linux/quotaops.h
    @@ -22,7 +22,7 @@ static inline struct quota_info *sb_dqop
    /* i_mutex must being held */
    static inline bool is_quota_modification(struct inode *inode, struct iattr *ia)
    {
    - return (ia->ia_valid & ATTR_SIZE && ia->ia_size != inode->i_size) ||
    + return (ia->ia_valid & ATTR_SIZE) ||
    (ia->ia_valid & ATTR_UID && !uid_eq(ia->ia_uid, inode->i_uid)) ||
    (ia->ia_valid & ATTR_GID && !gid_eq(ia->ia_gid, inode->i_gid));
    }

    \
     
     \ /
      Last update: 2019-10-03 18:54    [W:4.089 / U:0.484 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site