@@ -2949,29 +2949,31 @@ int parse_reparse_point(struct reparse_data_buffer *buf,
2949
2949
return parse_reparse_symlink (
2950
2950
(struct reparse_symlink_data_buffer * )buf ,
2951
2951
plen , unicode , target_path , cifs_sb );
2952
+ case IO_REPARSE_TAG_LX_SYMLINK :
2953
+ case IO_REPARSE_TAG_AF_UNIX :
2954
+ case IO_REPARSE_TAG_LX_FIFO :
2955
+ case IO_REPARSE_TAG_LX_CHR :
2956
+ case IO_REPARSE_TAG_LX_BLK :
2957
+ return 0 ;
2952
2958
default :
2953
2959
cifs_dbg (VFS , "srv returned unknown symlink buffer tag:0x%08x\n" ,
2954
2960
le32_to_cpu (buf -> ReparseTag ));
2955
2961
return - EOPNOTSUPP ;
2956
2962
}
2957
2963
}
2958
2964
2959
- static int smb2_query_symlink (const unsigned int xid ,
2960
- struct cifs_tcon * tcon ,
2961
- struct cifs_sb_info * cifs_sb ,
2962
- const char * full_path ,
2963
- char * * target_path ,
2964
- struct kvec * rsp_iov )
2965
+ static int smb2_parse_reparse_point (struct cifs_sb_info * cifs_sb ,
2966
+ struct kvec * rsp_iov ,
2967
+ struct cifs_open_info_data * data )
2965
2968
{
2966
2969
struct reparse_data_buffer * buf ;
2967
2970
struct smb2_ioctl_rsp * io = rsp_iov -> iov_base ;
2968
2971
u32 plen = le32_to_cpu (io -> OutputCount );
2969
2972
2970
- cifs_tcon_dbg (FYI , "%s: path: %s\n" , __func__ , full_path );
2971
-
2972
2973
buf = (struct reparse_data_buffer * )((u8 * )io +
2973
2974
le32_to_cpu (io -> OutputOffset ));
2974
- return parse_reparse_point (buf , plen , cifs_sb , true, target_path );
2975
+ return parse_reparse_point (buf , plen , cifs_sb ,
2976
+ true, & data -> symlink_target );
2975
2977
}
2976
2978
2977
2979
static int smb2_query_reparse_point (const unsigned int xid ,
@@ -5206,7 +5208,7 @@ struct smb_version_operations smb20_operations = {
5206
5208
.unlink = smb2_unlink ,
5207
5209
.rename = smb2_rename_path ,
5208
5210
.create_hardlink = smb2_create_hardlink ,
5209
- .query_symlink = smb2_query_symlink ,
5211
+ .parse_reparse_point = smb2_parse_reparse_point ,
5210
5212
.query_mf_symlink = smb3_query_mf_symlink ,
5211
5213
.create_mf_symlink = smb3_create_mf_symlink ,
5212
5214
.open = smb2_open_file ,
@@ -5308,7 +5310,7 @@ struct smb_version_operations smb21_operations = {
5308
5310
.unlink = smb2_unlink ,
5309
5311
.rename = smb2_rename_path ,
5310
5312
.create_hardlink = smb2_create_hardlink ,
5311
- .query_symlink = smb2_query_symlink ,
5313
+ .parse_reparse_point = smb2_parse_reparse_point ,
5312
5314
.query_mf_symlink = smb3_query_mf_symlink ,
5313
5315
.create_mf_symlink = smb3_create_mf_symlink ,
5314
5316
.open = smb2_open_file ,
@@ -5413,7 +5415,7 @@ struct smb_version_operations smb30_operations = {
5413
5415
.unlink = smb2_unlink ,
5414
5416
.rename = smb2_rename_path ,
5415
5417
.create_hardlink = smb2_create_hardlink ,
5416
- .query_symlink = smb2_query_symlink ,
5418
+ .parse_reparse_point = smb2_parse_reparse_point ,
5417
5419
.query_mf_symlink = smb3_query_mf_symlink ,
5418
5420
.create_mf_symlink = smb3_create_mf_symlink ,
5419
5421
.open = smb2_open_file ,
@@ -5527,7 +5529,7 @@ struct smb_version_operations smb311_operations = {
5527
5529
.unlink = smb2_unlink ,
5528
5530
.rename = smb2_rename_path ,
5529
5531
.create_hardlink = smb2_create_hardlink ,
5530
- .query_symlink = smb2_query_symlink ,
5532
+ .parse_reparse_point = smb2_parse_reparse_point ,
5531
5533
.query_mf_symlink = smb3_query_mf_symlink ,
5532
5534
.create_mf_symlink = smb3_create_mf_symlink ,
5533
5535
.open = smb2_open_file ,
0 commit comments