On Fri, Jun 28, 2019 at 5:09 PM Steve French <smfrench@xxxxxxxxx> wrote: > > Querying of symlinks to the Samba server with POSIX extensions works! > > (Also would work for querying symlinks generated in Windows NFS server) > > # stat /mnt1/symlink-source > File: /mnt1/symlink-source -> symlink-target > Size: 14 Blocks: 2048 IO Block: 16384 symbolic link > Device: 39h/57d Inode: 10354691 Links: 1 > Access: (0000/l---------) Uid: ( 0/ root) Gid: ( 0/ root) > Access: 2019-06-28 01:43:37.145324400 -0500 > Modify: 2019-06-28 01:43:37.145324400 -0500 > Change: 2019-06-28 01:43:37.145324400 -0500 > Birth: - > > Very nice. Change parse_reparse_point() to take a struct reparse_data_buffer as argument, not a reparse_symlink_data_buffer. i.e. parse_reparse_point(struct reparse_data_buffer *reparse_buf, Then this check should probably be in parse_reparse_point() and not in parse_reparse_posix() since we will need this check for every type of reparse point: + if (len + sizeof(struct reparse_data_buffer) > plen) { + cifs_dbg(VFS, "srv returned malformed symlink buffer\n"); + return -EINVAL; + } If you do that, then you can remove the equivalent check in smb2_query_symlink() : if (plen < le16_to_cpu(reparse_buf->ReparseDataLength) + 8) { ... > -- > Thanks, > > Steve