Commit 0ecdb4f572f6ab2219a01e3af349863f6e8b45af
Committed by
Steve French
1 parent
0f8dce1cb7
Exists in
master
and in
16 other branches
cifs: move unix extension call to cifs_query_symlink()
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>
Showing 2 changed files with 15 additions and 10 deletions Side-by-side Diff
fs/cifs/link.c
... | ... | @@ -518,10 +518,7 @@ |
518 | 518 | rc = query_mf_symlink(xid, tcon, cifs_sb, full_path, |
519 | 519 | &target_path); |
520 | 520 | |
521 | - if ((rc != 0) && cap_unix(tcon->ses)) | |
522 | - rc = CIFSSMBUnixQuerySymLink(xid, tcon, full_path, &target_path, | |
523 | - cifs_sb->local_nls); | |
524 | - else if (rc != 0 && server->ops->query_symlink) | |
521 | + if (rc != 0 && server->ops->query_symlink) | |
525 | 522 | rc = server->ops->query_symlink(xid, tcon, full_path, |
526 | 523 | &target_path, cifs_sb); |
527 | 524 |
fs/cifs/smb1ops.c
... | ... | @@ -918,23 +918,31 @@ |
918 | 918 | |
919 | 919 | cifs_dbg(FYI, "%s: path: %s\n", __func__, full_path); |
920 | 920 | |
921 | + /* Check for unix extensions */ | |
922 | + if (cap_unix(tcon->ses)) { | |
923 | + rc = CIFSSMBUnixQuerySymLink(xid, tcon, full_path, target_path, | |
924 | + cifs_sb->local_nls); | |
925 | + goto out; | |
926 | + } | |
927 | + | |
921 | 928 | rc = CIFSSMBOpen(xid, tcon, full_path, FILE_OPEN, |
922 | 929 | FILE_READ_ATTRIBUTES, OPEN_REPARSE_POINT, &netfid, |
923 | 930 | &oplock, NULL, cifs_sb->local_nls, |
924 | 931 | cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR); |
925 | 932 | if (rc) |
926 | - return rc; | |
933 | + goto out; | |
927 | 934 | |
928 | 935 | rc = CIFSSMBQuerySymLink(xid, tcon, netfid, target_path, |
929 | 936 | cifs_sb->local_nls); |
930 | - if (rc) { | |
931 | - CIFSSMBClose(xid, tcon, netfid); | |
932 | - return rc; | |
933 | - } | |
937 | + if (rc) | |
938 | + goto out_close; | |
934 | 939 | |
935 | 940 | convert_delimiter(*target_path, '/'); |
941 | +out_close: | |
936 | 942 | CIFSSMBClose(xid, tcon, netfid); |
937 | - cifs_dbg(FYI, "%s: target path: %s\n", __func__, *target_path); | |
943 | +out: | |
944 | + if (!rc) | |
945 | + cifs_dbg(FYI, "%s: target path: %s\n", __func__, *target_path); | |
938 | 946 | return rc; |
939 | 947 | } |
940 | 948 |