@@ -2949,29 +2949,31 @@ int parse_reparse_point(struct reparse_data_buffer *buf,
29492949 return parse_reparse_symlink (
29502950 (struct reparse_symlink_data_buffer * )buf ,
29512951 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 ;
29522958 default :
29532959 cifs_dbg (VFS , "srv returned unknown symlink buffer tag:0x%08x\n" ,
29542960 le32_to_cpu (buf -> ReparseTag ));
29552961 return - EOPNOTSUPP ;
29562962 }
29572963}
29582964
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 )
29652968{
29662969 struct reparse_data_buffer * buf ;
29672970 struct smb2_ioctl_rsp * io = rsp_iov -> iov_base ;
29682971 u32 plen = le32_to_cpu (io -> OutputCount );
29692972
2970- cifs_tcon_dbg (FYI , "%s: path: %s\n" , __func__ , full_path );
2971-
29722973 buf = (struct reparse_data_buffer * )((u8 * )io +
29732974 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 );
29752977}
29762978
29772979static int smb2_query_reparse_point (const unsigned int xid ,
@@ -5206,7 +5208,7 @@ struct smb_version_operations smb20_operations = {
52065208 .unlink = smb2_unlink ,
52075209 .rename = smb2_rename_path ,
52085210 .create_hardlink = smb2_create_hardlink ,
5209- .query_symlink = smb2_query_symlink ,
5211+ .parse_reparse_point = smb2_parse_reparse_point ,
52105212 .query_mf_symlink = smb3_query_mf_symlink ,
52115213 .create_mf_symlink = smb3_create_mf_symlink ,
52125214 .open = smb2_open_file ,
@@ -5308,7 +5310,7 @@ struct smb_version_operations smb21_operations = {
53085310 .unlink = smb2_unlink ,
53095311 .rename = smb2_rename_path ,
53105312 .create_hardlink = smb2_create_hardlink ,
5311- .query_symlink = smb2_query_symlink ,
5313+ .parse_reparse_point = smb2_parse_reparse_point ,
53125314 .query_mf_symlink = smb3_query_mf_symlink ,
53135315 .create_mf_symlink = smb3_create_mf_symlink ,
53145316 .open = smb2_open_file ,
@@ -5413,7 +5415,7 @@ struct smb_version_operations smb30_operations = {
54135415 .unlink = smb2_unlink ,
54145416 .rename = smb2_rename_path ,
54155417 .create_hardlink = smb2_create_hardlink ,
5416- .query_symlink = smb2_query_symlink ,
5418+ .parse_reparse_point = smb2_parse_reparse_point ,
54175419 .query_mf_symlink = smb3_query_mf_symlink ,
54185420 .create_mf_symlink = smb3_create_mf_symlink ,
54195421 .open = smb2_open_file ,
@@ -5527,7 +5529,7 @@ struct smb_version_operations smb311_operations = {
55275529 .unlink = smb2_unlink ,
55285530 .rename = smb2_rename_path ,
55295531 .create_hardlink = smb2_create_hardlink ,
5530- .query_symlink = smb2_query_symlink ,
5532+ .parse_reparse_point = smb2_parse_reparse_point ,
55315533 .query_mf_symlink = smb3_query_mf_symlink ,
55325534 .create_mf_symlink = smb3_create_mf_symlink ,
55335535 .open = smb2_open_file ,
0 commit comments