kernel_optimize_test/fs/cifs
Georgy A Bystrenin 9a596f5b39 CIFS: Fix error mapping for SMB2_LOCK command which caused OFD lock problem
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>
2018-12-23 22:42:56 -06:00
..
asn1.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
cache.c cifs: use 64-bit timestamps for fscache 2018-08-07 14:15:41 -05:00
cifs_debug.c smb3: allow more detailed protocol info on open files for debugging 2018-11-02 14:09:41 -05:00
cifs_debug.h cifs: minor clarification in comments 2018-10-23 21:16:05 -05:00
cifs_dfs_ref.c CIFS: make 'nodfs' mount opt a superblock flag 2018-10-23 21:16:05 -05:00
cifs_fs_sb.h CIFS: make 'nodfs' mount opt a superblock flag 2018-10-23 21:16:05 -05:00
cifs_ioctl.h cifs: add IOCTL for QUERY_INFO passthrough to userspace 2018-10-23 21:16:05 -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 fs/cifs: don't translate SFM_SLASH (U+F026) to backslash 2018-09-02 23:21:42 -05:00
cifs_unicode.h [SMB3] Remove ifdef since SMB3 (and later) now STRONGLY preferred 2017-07-08 18:57:07 -05:00
cifs_uniupr.h
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: don't dereference smb_file_target before null check 2018-11-02 14:09:42 -05:00
cifsfs.h CIFS: Add support for direct I/O write 2018-11-02 14:09:42 -05:00
cifsglob.h Add vers=3.0.2 as a valid option for SMBv3.0.2 2018-12-23 22:39:29 -06:00
cifspdu.h smb3: missing defines and structs for reparse point handling 2018-11-02 14:09:41 -05:00
cifsproto.h cifs: OFD locks do not conflict with eachothers 2018-10-23 21:16:05 -05:00
cifssmb.c CIFS: pass page offsets on SMB1 read/write 2018-10-23 21:16:05 -05:00
connect.c cifs: suppress some implicit-fallthrough warnings 2018-12-23 22:41:11 -06:00
dir.c cifs: Fix separator when building path from dentry 2018-12-06 02:20:17 -06:00
dns_resolve.c
dns_resolve.h
export.c
file.c CIFS: return correct errors when pinning memory failed for direct I/O 2018-12-23 22:42:48 -06: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: address trivial coverity warning 2018-12-23 22:38:14 -06:00
ioctl.c cifs: add support for ioctl on directories 2018-10-23 21:16:05 -05:00
Kconfig cifs: In Kconfig CONFIG_CIFS_POSIX needs depends on legacy (insecure cifs) 2018-12-06 02:20:14 -06:00
link.c smb3: don't request leases in symlink creation and query 2018-08-07 14:15:57 -05:00
Makefile smb3: Add ftrace tracepoints for improved SMB3 debugging 2018-05-27 17:56:35 -05:00
misc.c Merge branch 'work.afs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2018-11-01 19:58:52 -07:00
netmisc.c cifs: use timespec64 internally 2018-08-07 14:15:41 -05:00
nterr.c
nterr.h
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 cifs: simple stats should always be enabled 2018-08-07 14:20:22 -05:00
smb2file.c cifs: Fix stack out-of-bounds in smb{2,3}_create_lease_buf() 2018-07-05 13:48:25 -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: Fix rmdir compounding regression to strict servers 2018-12-19 07:55:32 -06:00
smb2maperror.c CIFS: Fix error mapping for SMB2_LOCK command which caused OFD lock problem 2018-12-23 22:42:56 -06:00
smb2misc.c smb3: minor debugging clarifications in rfc1001 len processing 2018-09-02 23:21:42 -05:00
smb2ops.c cifs: change smb2_query_eas to use the compound query-info helper 2018-12-23 22:40:17 -06:00
smb2pdu.c cifs: change smb2_query_eas to use the compound query-info helper 2018-12-23 22:40:17 -06:00
smb2pdu.h cifs: change smb2_query_eas to use the compound query-info helper 2018-12-23 22:40:17 -06:00
smb2proto.h cifs: change smb2_query_eas to use the compound query-info helper 2018-12-23 22:40:17 -06:00
smb2status.h
smb2transport.c CIFS: fix uninitialized ptr deref in smb2 signing 2018-08-07 14:30:59 -05:00
smbdirect.c Merge branch 'work.afs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2018-11-01 19:58:52 -07:00
smbdirect.h cifs: fix SMB1 breakage 2018-07-05 13:48:24 -05:00
smbencrypt.c CIFS: refactor crypto shash/sdesc allocation&free 2018-04-01 20:24:39 -05:00
smberr.h
smbfsctl.h
trace.c smb3: Add ftrace tracepoints for improved SMB3 debugging 2018-05-27 17:56:35 -05:00
trace.h smb3: add trace point for tree connection 2018-11-02 14:09:41 -05:00
transport.c cifs: smb2 commands can not be negative, remove confusing check 2018-12-23 22:37:23 -06:00
winucase.c
xattr.c smb3: create smb3 equivalent alias for cifs pseudo-xattrs 2018-08-10 18:46:58 -05:00