android_kernel_oneplus_msm8998/fs/cifs
Georgy A Bystrenin c78a5d4a64 CIFS: Fix error mapping for SMB2_LOCK command which caused OFD lock problem
commit 9a596f5b39593414c0ec80f71b94a226286f084e upstream.

While resolving a bug with locks on samba shares found a strange behavior.
When a file locked by one node and we trying to lock it from another node
it fail with errno 5 (EIO) but in that case errno must be set to
(EACCES | EAGAIN).
This isn't happening when we try to lock file second time on same node.
In this case it returns EACCES as expected.
Also this issue not reproduces when we use SMB1 protocol (vers=1.0 in
mount options).

Further investigation showed that the mapping from status_to_posix_error
is different for SMB1 and SMB2+ implementations.
For SMB1 mapping is [NT_STATUS_LOCK_NOT_GRANTED to ERRlock]
(See fs/cifs/netmisc.c line 66)
but for SMB2+ mapping is [STATUS_LOCK_NOT_GRANTED to -EIO]
(see fs/cifs/smb2maperror.c line 383)

Quick changes in SMB2+ mapping from EIO to EACCES has fixed issue.

BUG: https://bugzilla.kernel.org/show_bug.cgi?id=201971

Signed-off-by: Georgy A Bystrenin <gkot@altlinux.org>
Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
CC: Stable <stable@vger.kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-01-13 10:05:31 +01:00
..
asn1.c
cache.c
cifs_debug.c smb3: allow stats which track session and share reconnects to be reset 2018-11-21 09:27:35 +01:00
cifs_debug.h lib: update single-char callers of strtobool() 2016-10-28 03:01:30 -04:00
cifs_dfs_ref.c
cifs_fs_sb.h fs/cifs: make share unaccessible at root level mountable 2016-08-20 18:09:20 +02:00
cifs_ioctl.h
cifs_spnego.c smb3: on kerberos mount if server doesn't specify auth type use krb5 2018-11-21 09:27:35 +01:00
cifs_spnego.h
cifs_unicode.c fs/cifs: don't translate SFM_SLASH (U+F026) to backslash 2018-10-10 08:52:11 +02:00
cifs_unicode.h CIFS: add misssing SFM mapping for doublequote 2017-05-20 14:27:01 +02:00
cifs_uniupr.h
cifsacl.c
cifsacl.h
cifsencrypt.c CIFS: zero sensitive data when freeing 2018-02-16 20:09:39 +01:00
cifsfs.c SMB3: GUIDs should be constructed as random but valid uuids 2016-10-28 03:01:32 -04:00
cifsfs.h Fix cifs_uniqueid_to_ino_t() function for s390x 2016-03-09 15:34:50 -08:00
cifsglob.h CIFS: Reconnect expired SMB sessions 2017-10-18 09:20:40 +02:00
cifspdu.h
cifsproto.h CIFS: Fix a possible memory corruption during reconnect 2017-01-06 11:16:15 +01:00
cifssmb.c fs/cifs: suppress a string overflow warning 2018-10-10 08:52:12 +02:00
connect.c CIFS: handle guest access errors to Windows shares 2018-11-10 07:41:37 -08:00
dir.c cifs: Fix separator when building path from dentry 2018-12-13 09:21:36 +01:00
dns_resolve.c
dns_resolve.h
export.c
file.c CIFS: silence lockdep splat in cifs_relock_file() 2018-04-13 19:50:03 +02:00
fscache.c
fscache.h
inode.c smb3: do not attempt cifs operation in smb3 query info error path 2018-11-21 09:27:35 +01:00
ioctl.c cifs: fix CIFS_IOC_GET_MNT_INFO oops 2017-05-20 14:27:01 +02:00
Kconfig cifs: In Kconfig CONFIG_CIFS_POSIX needs depends on legacy (insecure cifs) 2018-12-21 14:09:53 +01:00
link.c smb3: don't request leases in symlink creation and query 2018-09-05 09:18:37 +02:00
Makefile
misc.c cifs: read overflow in is_valid_oplock_break() 2018-10-10 08:52:12 +02:00
netmisc.c cifs: small underflow in cnvrtDosUnixTm() 2018-03-24 10:58:46 +01:00
nterr.c
nterr.h
ntlmssp.h cifs: dynamic allocation of ntlmssp blob 2016-07-27 09:47:39 -07:00
readdir.c cifs: prevent integer overflow in nxt_dir_entry() 2018-09-26 08:35:08 +02:00
rfc1002pdu.h
sess.c cifs: check kmalloc before use 2018-09-05 09:18:37 +02:00
smb1ops.c CIFS: Improve readdir verbosity 2017-06-29 12:48:51 +02:00
smb2file.c CIFS: Fix a possible memory corruption in push locks 2017-01-06 11:16:16 +01:00
smb2glob.h cifs: Limit the overall credit acquired 2016-10-28 03:01:32 -04:00
smb2inode.c smb3: Do not send SMB3 SET_INFO if nothing changed 2018-09-05 09:18:37 +02:00
smb2maperror.c CIFS: Fix error mapping for SMB2_LOCK command which caused OFD lock problem 2019-01-13 10:05:31 +01:00
smb2misc.c cifs: check if SMB2 PDU size has been padded and suppress the warning 2018-09-15 09:40:37 +02:00
smb2ops.c smb2: fix missing files in root share directory listing 2018-10-10 08:52:13 +02:00
smb2pdu.c CIFS: fix wrapping bugs in num_entries() 2018-09-26 08:35:08 +02:00
smb2pdu.h CIFS: Fix maximum SMB2 header size 2017-09-07 08:34:09 +02:00
smb2proto.h Handle mismatched open calls 2017-05-08 07:46:01 +02:00
smb2status.h
smb2transport.c Handle mismatched open calls 2017-05-08 07:46:01 +02:00
smbencrypt.c
smberr.h
smbfsctl.h
transport.c Handle mismatched open calls 2017-05-08 07:46:01 +02:00
winucase.c
xattr.c