mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-16 23:36:09 -05:00
cifs: Simplify reparse point check in cifs_query_path_info() function
For checking if path is reparse point and setting data->reparse_point member, it is enough to check if ATTR_REPARSE is present. It is not required to call CIFS_open() without OPEN_REPARSE_POINT and checking for -EOPNOTSUPP error code. Signed-off-by: Pali Rohár <pali@kernel.org> Acked-by: Paulo Alcantara (Red Hat) <pc@manguebit.com> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
@@ -569,32 +569,8 @@ static int cifs_query_path_info(const unsigned int xid,
|
||||
}
|
||||
|
||||
if (!rc) {
|
||||
int tmprc;
|
||||
int oplock = 0;
|
||||
struct cifs_fid fid;
|
||||
struct cifs_open_parms oparms;
|
||||
|
||||
move_cifs_info_to_smb2(&data->fi, &fi);
|
||||
|
||||
if (!(le32_to_cpu(fi.Attributes) & ATTR_REPARSE))
|
||||
return 0;
|
||||
|
||||
oparms = (struct cifs_open_parms) {
|
||||
.tcon = tcon,
|
||||
.cifs_sb = cifs_sb,
|
||||
.desired_access = FILE_READ_ATTRIBUTES,
|
||||
.create_options = cifs_create_options(cifs_sb, 0),
|
||||
.disposition = FILE_OPEN,
|
||||
.path = full_path,
|
||||
.fid = &fid,
|
||||
};
|
||||
|
||||
/* Need to check if this is a symbolic link or not */
|
||||
tmprc = CIFS_open(xid, &oparms, &oplock, NULL);
|
||||
if (tmprc == -EOPNOTSUPP)
|
||||
data->reparse_point = true;
|
||||
else if (tmprc == 0)
|
||||
CIFSSMBClose(xid, tcon, fid.netfid);
|
||||
data->reparse_point = le32_to_cpu(fi.Attributes) & ATTR_REPARSE;
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
||||
Reference in New Issue
Block a user