linux/fs/cifs
Ronnie Sahlberg 5de254dca8 cifs: fix crash querying symlinks stored as reparse-points
We never parsed/returned any data from .get_link() when the object is a windows reparse-point
containing a symlink. This results in the VFS layer oopsing accessing an uninitialized buffer:

...
[  171.407172] Call Trace:
[  171.408039]  readlink_copy+0x29/0x70
[  171.408872]  vfs_readlink+0xc1/0x1f0
[  171.409709]  ? readlink_copy+0x70/0x70
[  171.410565]  ? simple_attr_release+0x30/0x30
[  171.411446]  ? getname_flags+0x105/0x2a0
[  171.412231]  do_readlinkat+0x1b7/0x1e0
[  171.412938]  ? __ia32_compat_sys_newfstat+0x30/0x30
...

Fix this by adding code to handle these buffers and make sure we do return a valid buffer
to .get_link()

CC: Stable <stable@vger.kernel.org>
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2019-06-28 00:34:17 -05:00
..
asn1.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cache.c cifs: use 64-bit timestamps for fscache 2018-08-07 14:15:41 -05:00
cifs_debug.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cifs_debug.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cifs_dfs_ref.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
cifs_fs_sb.h smb3: make default i/o size for smb3 mounts larger 2019-03-04 20:05:35 -06:00
cifs_ioctl.h SMB3: passthru query info doesn't check for SMB3 FSCTL passthru 2019-03-14 19:32:36 -05:00
cifs_spnego.c smb3: on kerberos mount if server doesn't specify auth type use krb5 2018-11-02 14:09:41 -05:00
cifs_spnego.h
cifs_unicode.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cifs_unicode.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cifs_uniupr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cifsacl.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
cifsacl.h cifs: For SMB2 security informaion query, check for minimum sized security descriptor instead of sizeof FileAllInformation class 2018-06-04 19:19:24 -05:00
cifsencrypt.c cifs: remove coverity warning in calc_lanman_hash 2018-12-23 22:41:26 -06:00
cifsfs.c cifs: add spinlock for the openFileList to cifsInodeInfo 2019-06-13 14:21:09 -05:00
cifsfs.h cifs: update module internal version number 2019-05-07 23:24:56 -05:00
cifsglob.h cifs: add spinlock for the openFileList to cifsInodeInfo 2019-06-13 14:21:09 -05:00
cifspdu.h smb3: missing defines and structs for reparse point handling 2018-11-02 14:09:41 -05:00
cifsproto.h cifs: Fix DFS cache refresher for DFS links 2019-05-07 23:24:54 -05:00
cifssmb.c cifs: rename and clarify CIFS_ASYNC_OP and CIFS_NO_RESP 2019-05-07 23:24:55 -05:00
connect.c cifs: fix GlobalMid_Lock bug in cifs_reconnect 2019-06-17 16:27:02 -05:00
dfs_cache.c dfs_cache: fix a wrong use of kfree in flush_cache_ent() 2019-05-28 19:13:58 -05:00
dfs_cache.h cifs: Fix DFS cache refresher for DFS links 2019-05-07 23:24:54 -05:00
dir.c CIFS: make mknod() an smb_version_op 2019-03-14 19:32:36 -05:00
dns_resolve.c dns_resolver: Allow used keys to be invalidated 2019-05-15 17:35:54 +01:00
dns_resolve.h
export.c
file.c cifs: add spinlock for the openFileList to cifsInodeInfo 2019-06-13 14:21:09 -05:00
fscache.c cifs: use 64-bit timestamps for fscache 2018-08-07 14:15:41 -05:00
fscache.h cifs: use 64-bit timestamps for fscache 2018-08-07 14:15:41 -05:00
inode.c cifs: add fiemap support 2019-05-07 23:24:55 -05:00
ioctl.c cifs: add support for ioctl on directories 2018-10-23 21:16:05 -05:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
link.c SMB3: Clean up query symlink when reparse point 2019-05-07 23:24:55 -05:00
Makefile cifs: Add DFS cache routines 2018-12-28 10:05:58 -06:00
misc.c Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2019-05-06 20:15:06 -07:00
netmisc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
nterr.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
nterr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
ntlmssp.h
readdir.c cifs: check ntwrk_buf_start for NULL before dereferencing it 2018-12-23 22:41:31 -06:00
rfc1002pdu.h
sess.c cifs: remove set but not used variable 'smb_buf' 2018-12-23 22:41:20 -06:00
smb1ops.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 231 2019-06-19 17:09:06 +02:00
smb2file.c SMB3: Allow persistent handle timeout to be configurable on mount 2019-04-01 14:33:36 -05:00
smb2glob.h cifs: change SMB2_OP_RENAME and SMB2_OP_HARDLINK to use compounding 2018-10-23 21:16:04 -05:00
smb2inode.c smb3: Add dynamic trace points for various compounded smb3 ops 2019-03-14 19:32:35 -05:00
smb2maperror.c SMB3: retry on STATUS_INSUFFICIENT_RESOURCES instead of failing write 2019-06-17 16:17:56 -05:00
smb2misc.c CIFS: keep FileInfo handle live during oplock break 2019-04-16 09:38:38 -05:00
smb2ops.c cifs: fix crash querying symlinks stored as reparse-points 2019-06-28 00:34:17 -05:00
smb2pdu.c cifs: fix panic in smb2_reconnect 2019-06-13 14:20:57 -05:00
smb2pdu.h cifs: fix crash querying symlinks stored as reparse-points 2019-06-28 00:34:17 -05:00
smb2proto.h smb3: Fix enumerating snapshots to Azure 2019-04-01 14:33:34 -05:00
smb2status.h cifs: don't use __constant_cpu_to_le32() 2019-05-07 23:24:54 -05:00
smb2transport.c CIFS: Only send SMB2_NEGOTIATE command on new TCP connections 2019-03-05 18:14:27 -06:00
smbdirect.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
smbdirect.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
smbencrypt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
smberr.h
smbfsctl.h cifs: add fiemap support 2019-05-07 23:24:55 -05:00
trace.c smb3: Cleanup license mess 2019-01-24 09:37:33 -06:00
trace.h cifs: Fix slab-out-of-bounds when tracing SMB tcon 2019-03-22 22:36:54 -05:00
transport.c cifs: use the right include for signal_pending() 2019-05-12 23:23:34 -05:00
winucase.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
xattr.c smb3: create smb3 equivalent alias for cifs pseudo-xattrs 2018-08-10 18:46:58 -05:00