Commit 29cf2823 authored by Paulo Alcantara's avatar Paulo Alcantara Committed by Steve French
Browse files

cifs: fix file info setting in cifs_query_path_info()

We missed to set file info when CIFSSMBQPathInfo() returned 0, thus
leaving cifs_open_info_data::fi unset.

Fix this by setting cifs_open_info_data::fi when either
CIFSSMBQPathInfo() or SMBQueryInformation() succeed.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=216881


Fixes: 76894f3e ("cifs: improve symlink handling for smb2+")
Signed-off-by: default avatarPaulo Alcantara (SUSE) <pc@cjr.nz>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent b7bfaa76
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -562,17 +562,20 @@ static int cifs_query_path_info(const unsigned int xid, struct cifs_tcon *tcon,
	if ((rc == -EOPNOTSUPP) || (rc == -EINVAL)) {
		rc = SMBQueryInformation(xid, tcon, full_path, &fi, cifs_sb->local_nls,
					 cifs_remap(cifs_sb));
		if (!rc)
			move_cifs_info_to_smb2(&data->fi, &fi);
		*adjustTZ = true;
	}

	if (!rc && (le32_to_cpu(fi.Attributes) & ATTR_REPARSE)) {
	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.tcon = tcon;
		oparms.cifs_sb = cifs_sb;
		oparms.desired_access = FILE_READ_ATTRIBUTES;