]> www.infradead.org Git - users/hch/configfs.git/commitdiff
smb: client: ignore unhandled reparse tags
authorPaulo Alcantara <pc@manguebit.com>
Wed, 21 Aug 2024 03:45:03 +0000 (00:45 -0300)
committerSteve French <stfrench@microsoft.com>
Thu, 22 Aug 2024 17:37:16 +0000 (12:37 -0500)
Just ignore reparse points that the client can't parse rather than
bailing out and not opening the file or directory.

Reported-by: Marc <1marc1@gmail.com>
Closes: https://lore.kernel.org/r/CAMHwNVv-B+Q6wa0FEXrAuzdchzcJRsPKDDRrNaYZJd6X-+iJzw@mail.gmail.com
Fixes: 539aad7f14da ("smb: client: introduce ->parse_reparse_point()")
Tested-by: Anthony Nandaa (Microsoft) <profnandaa@gmail.com>
Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/reparse.c

index 689d8a506d4593caa5952c390c4b0efdbdab06cf..48c27581ec511cd4f90b342850fcfd99b2772bff 100644 (file)
@@ -378,6 +378,8 @@ int parse_reparse_point(struct reparse_data_buffer *buf,
                        u32 plen, struct cifs_sb_info *cifs_sb,
                        bool unicode, struct cifs_open_info_data *data)
 {
+       struct cifs_tcon *tcon = cifs_sb_master_tcon(cifs_sb);
+
        data->reparse.buf = buf;
 
        /* See MS-FSCC 2.1.2 */
@@ -394,12 +396,13 @@ int parse_reparse_point(struct reparse_data_buffer *buf,
        case IO_REPARSE_TAG_LX_FIFO:
        case IO_REPARSE_TAG_LX_CHR:
        case IO_REPARSE_TAG_LX_BLK:
-               return 0;
+               break;
        default:
-               cifs_dbg(VFS, "%s: unhandled reparse tag: 0x%08x\n",
-                        __func__, le32_to_cpu(buf->ReparseTag));
-               return -EOPNOTSUPP;
+               cifs_tcon_dbg(VFS | ONCE, "unhandled reparse tag: 0x%08x\n",
+                             le32_to_cpu(buf->ReparseTag));
+               break;
        }
+       return 0;
 }
 
 int smb2_parse_reparse_point(struct cifs_sb_info *cifs_sb,