Skip to content

Commit

Permalink
cifs: move unix extension call to cifs_query_symlink()
Browse files Browse the repository at this point in the history
Unix extensions rigth now are only applicable to smb1 operations.
Move the check and subsequent unix extension call to the smb1
specific call to query_symlink() ie. cifs_query_symlink().

Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <smfrench@gmail.com>
  • Loading branch information
Sachin Prabhu authored and Steve French committed Jan 20, 2014
1 parent 0f8dce1 commit 0ecdb4f
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 10 deletions.
5 changes: 1 addition & 4 deletions fs/cifs/link.c
Original file line number Diff line number Diff line change
Expand Up @@ -518,10 +518,7 @@ cifs_follow_link(struct dentry *direntry, struct nameidata *nd)
rc = query_mf_symlink(xid, tcon, cifs_sb, full_path,
&target_path);

if ((rc != 0) && cap_unix(tcon->ses))
rc = CIFSSMBUnixQuerySymLink(xid, tcon, full_path, &target_path,
cifs_sb->local_nls);
else if (rc != 0 && server->ops->query_symlink)
if (rc != 0 && server->ops->query_symlink)
rc = server->ops->query_symlink(xid, tcon, full_path,
&target_path, cifs_sb);

Expand Down
20 changes: 14 additions & 6 deletions fs/cifs/smb1ops.c
Original file line number Diff line number Diff line change
Expand Up @@ -918,23 +918,31 @@ cifs_query_symlink(const unsigned int xid, struct cifs_tcon *tcon,

cifs_dbg(FYI, "%s: path: %s\n", __func__, full_path);

/* Check for unix extensions */
if (cap_unix(tcon->ses)) {
rc = CIFSSMBUnixQuerySymLink(xid, tcon, full_path, target_path,
cifs_sb->local_nls);
goto out;
}

rc = CIFSSMBOpen(xid, tcon, full_path, FILE_OPEN,
FILE_READ_ATTRIBUTES, OPEN_REPARSE_POINT, &netfid,
&oplock, NULL, cifs_sb->local_nls,
cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
if (rc)
return rc;
goto out;

rc = CIFSSMBQuerySymLink(xid, tcon, netfid, target_path,
cifs_sb->local_nls);
if (rc) {
CIFSSMBClose(xid, tcon, netfid);
return rc;
}
if (rc)
goto out_close;

convert_delimiter(*target_path, '/');
out_close:
CIFSSMBClose(xid, tcon, netfid);
cifs_dbg(FYI, "%s: target path: %s\n", __func__, *target_path);
out:
if (!rc)
cifs_dbg(FYI, "%s: target path: %s\n", __func__, *target_path);
return rc;
}

Expand Down

0 comments on commit 0ecdb4f

Please sign in to comment.