From: Konstantin Komarov Date: Fri, 13 May 2022 16:54:23 +0000 (+0300) Subject: fs/ntfs3: Fix work with fragmented xattr X-Git-Tag: v5.15.73~584 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d347d66b19729be12000633eac0d2a3d72e5090d;p=platform%2Fkernel%2Flinux-rpi.git fs/ntfs3: Fix work with fragmented xattr [ Upstream commit 42f86b1226a42bfc79a7125af435432ad4680a32 ] In some cases xattr is too fragmented, so we need to load it before writing. Signed-off-by: Konstantin Komarov Signed-off-by: Sasha Levin --- diff --git a/fs/ntfs3/xattr.c b/fs/ntfs3/xattr.c index e8bfa70..4652b97 100644 --- a/fs/ntfs3/xattr.c +++ b/fs/ntfs3/xattr.c @@ -118,7 +118,7 @@ static int ntfs_read_ea(struct ntfs_inode *ni, struct EA_FULL **ea, run_init(&run); - err = attr_load_runs(attr_ea, ni, &run, NULL); + err = attr_load_runs_range(ni, ATTR_EA, NULL, 0, &run, 0, size); if (!err) err = ntfs_read_run_nb(sbi, &run, 0, ea_p, size, NULL); run_close(&run); @@ -443,6 +443,11 @@ update_ea: /* Delete xattr, ATTR_EA */ ni_remove_attr_le(ni, attr, mi, le); } else if (attr->non_res) { + err = attr_load_runs_range(ni, ATTR_EA, NULL, 0, &ea_run, 0, + size); + if (err) + goto out; + err = ntfs_sb_write_run(sbi, &ea_run, 0, ea_all, size, 0); if (err) goto out;