Skip to content

Commit 3700ede

Browse files
committed
ntfs: fix LXUID/LXGID restore condition
Restore LXUID/LXGID in ntfs_ea_get_wsl_inode() when NTFS_VOL_UID/NTFS_VOL_GID is set. And call ntfs_ea_get_wsl_inode with NTFS_VOL_UID/NTFS_VOL_GID only when the uid/gid mount option is not specified. Signed-off-by: Hyunchul Lee <hyc.lee@gmail.com>
1 parent 74001d8 commit 3700ede

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

ea.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ int ntfs_ea_get_wsl_inode(struct inode *inode, dev_t *rdevp, unsigned int flags)
359359
int err;
360360
__le32 v;
361361

362-
if (!(flags & NTFS_VOL_UID)) {
362+
if (flags & NTFS_VOL_UID) {
363363
/* Load uid to lxuid EA */
364364
err = ntfs_get_ea(inode, "$LXUID", sizeof("$LXUID") - 1, &v,
365365
sizeof(v));
@@ -368,7 +368,7 @@ int ntfs_ea_get_wsl_inode(struct inode *inode, dev_t *rdevp, unsigned int flags)
368368
i_uid_write(inode, le32_to_cpu(v));
369369
}
370370

371-
if (!(flags & NTFS_VOL_UID)) {
371+
if (flags & NTFS_VOL_UID) {
372372
/* Load gid to lxgid EA */
373373
err = ntfs_get_ea(inode, "$LXGID", sizeof("$LXGID") - 1, &v,
374374
sizeof(v));

inode.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -726,15 +726,17 @@ static int ntfs_read_locked_inode(struct inode *vi)
726726

727727
if (uid_valid(vol->uid)) {
728728
vi->i_uid = vol->uid;
729-
flags |= NTFS_VOL_UID;
730-
} else
729+
} else {
731730
vi->i_uid = GLOBAL_ROOT_UID;
731+
flags |= NTFS_VOL_UID;
732+
}
732733

733734
if (gid_valid(vol->gid)) {
734735
vi->i_gid = vol->gid;
735-
flags |= NTFS_VOL_GID;
736-
} else
736+
} else {
737737
vi->i_gid = GLOBAL_ROOT_GID;
738+
flags |= NTFS_VOL_GID;
739+
}
738740

739741
vi->i_mode = 0777;
740742

@@ -917,10 +919,10 @@ static int ntfs_read_locked_inode(struct inode *vi)
917919
}
918920
skip_attr_list_load:
919921
err = ntfs_attr_lookup(AT_EA_INFORMATION, NULL, 0, 0, 0, NULL, 0, ctx);
920-
if (!err)
922+
if (!err) {
921923
NInoSetHasEA(ni);
922-
923-
ntfs_ea_get_wsl_inode(vi, &dev, flags);
924+
ntfs_ea_get_wsl_inode(vi, &dev, flags);
925+
}
924926

925927
if (m->flags & MFT_RECORD_IS_DIRECTORY) {
926928
vi->i_mode |= S_IFDIR;

0 commit comments

Comments
 (0)