For NFS-style reparse points in the current Linux SMB client I found few buffer overflows and then incompatibility issues related to char/block devices and symlinks. In this patch series I'm addressing these issues. I also located commits which introduced these issues, I put them into Fixes lines of commit messages. Test cases against Windows server which exports one directory over both SMB and NFS protocols. On Linux is mounted that directory to /mnt/nfs and /mnt/smb via different protocols. mknod /mnt/nfs/char c 1 3 stat /mnt/smb/char mknod /mnt/nfs/block b 8 0 stat /mnt/smb/block ln -s abc\\abc /mnt/nfs/symlink stat /mnt/smb/symlink ls -l /mnt/smb ls -l or stat over SMB should show the same information about char, block and symlink as over NFS. And vice-versa. Please look and check the buffer overflow issue as these buffer lengths are always nightmares to handle correctly. Pali Rohár (8): smb: Update comments about some reparse point tags cifs: Remove intermediate object of failed create reparse call cifs: Fix parsing NFS-style char/block devices cifs: Fix creating NFS-style char/block devices cifs: Fix buffer overflow when parsing NFS reparse points cifs: Do not convert delimiter when parsing NFS-style symlinks cifs: Validate content of NFS reparse point buffer cifs: Rename posix to nfs in parse_reparse_posix() and reparse_posix_data fs/smb/client/cifsglob.h | 2 +- fs/smb/client/cifspdu.h | 2 +- fs/smb/client/reparse.c | 53 +++++++++++++++++++++++++++++++-------- fs/smb/client/reparse.h | 12 ++++++--- fs/smb/client/smb2inode.c | 21 ++++++++++++++-- fs/smb/common/smb2pdu.h | 2 +- fs/smb/common/smbfsctl.h | 7 +++--- 7 files changed, 77 insertions(+), 22 deletions(-) -- 2.20.1