mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 23:22:31 +02:00
cifs: Improve handling of name surrogate reparse points in reparse.c
Like previous changes for file inode.c, handle directory name surrogate reparse points generally also in reparse.c. Signed-off-by: Pali Rohár <pali@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
9ce7351291
commit
12193b9801
|
|
@ -1236,16 +1236,6 @@ bool cifs_reparse_point_to_fattr(struct cifs_sb_info *cifs_sb,
|
|||
bool ok;
|
||||
|
||||
switch (tag) {
|
||||
case IO_REPARSE_TAG_INTERNAL:
|
||||
if (!(fattr->cf_cifsattrs & ATTR_DIRECTORY))
|
||||
return false;
|
||||
fallthrough;
|
||||
case IO_REPARSE_TAG_DFS:
|
||||
case IO_REPARSE_TAG_DFSR:
|
||||
case IO_REPARSE_TAG_MOUNT_POINT:
|
||||
/* See cifs_create_junction_fattr() */
|
||||
fattr->cf_mode = S_IFDIR | 0711;
|
||||
break;
|
||||
case IO_REPARSE_TAG_LX_SYMLINK:
|
||||
case IO_REPARSE_TAG_LX_FIFO:
|
||||
case IO_REPARSE_TAG_AF_UNIX:
|
||||
|
|
@ -1265,7 +1255,14 @@ bool cifs_reparse_point_to_fattr(struct cifs_sb_info *cifs_sb,
|
|||
fattr->cf_mode |= S_IFLNK;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
if (!(fattr->cf_cifsattrs & ATTR_DIRECTORY))
|
||||
return false;
|
||||
if (!IS_REPARSE_TAG_NAME_SURROGATE(tag) &&
|
||||
tag != IO_REPARSE_TAG_INTERNAL)
|
||||
return false;
|
||||
/* See cifs_create_junction_fattr() */
|
||||
fattr->cf_mode = S_IFDIR | 0711;
|
||||
break;
|
||||
}
|
||||
|
||||
fattr->cf_dtype = S_DT(fattr->cf_mode);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user