android_kernel_samsung_a7y1.../fs/cifs
Eric W. Biederman 4ab4bf67b6 signal: Allow cifs and drbd to receive their terminating signals
[ Upstream commit 33da8e7c814f77310250bb54a9db36a44c5de784 ]

My recent to change to only use force_sig for a synchronous events
wound up breaking signal reception cifs and drbd.  I had overlooked
the fact that by default kthreads start out with all signals set to
SIG_IGN.  So a change I thought was safe turned out to have made it
impossible for those kernel thread to catch their signals.

Reverting the work on force_sig is a bad idea because what the code
was doing was very much a misuse of force_sig.  As the way force_sig
ultimately allowed the signal to happen was to change the signal
handler to SIG_DFL.  Which after the first signal will allow userspace
to send signals to these kernel threads.  At least for
wake_ack_receiver in drbd that does not appear actively wrong.

So correct this problem by adding allow_kernel_signal that will allow
signals whose siginfo reports they were sent by the kernel through,
but will not allow userspace generated signals, and update cifs and
drbd to call allow_kernel_signal in an appropriate place so that their
thread can receive this signal.

Fixing things this way ensures that userspace won't be able to send
signals and cause problems, that it is clear which signals the
threads are expecting to receive, and it guarantees that nothing
else in the system will be affected.

This change was partly inspired by similar cifs and drbd patches that
added allow_signal.

Reported-by: ronnie sahlberg <ronniesahlberg@gmail.com>
Reported-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com>
Tested-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com>
Cc: Steve French <smfrench@gmail.com>
Cc: Philipp Reisner <philipp.reisner@linbit.com>
Cc: David Laight <David.Laight@ACULAB.COM>
Fixes: 247bc9470b1e ("cifs: fix rmmod regression in cifs.ko caused by force_sig changes")
Fixes: 72abe3bcf091 ("signal/cifs: Fix cifs_put_tcp_session to call send_sig instead of force_sig")
Fixes: fee109901f39 ("signal/drbd: Use send_sig not force_sig")
Fixes: 3cf5d076fb4d ("signal: Remove task parameter from force_sig")
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-04-07 13:42:54 +02:00
..
asn1.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cache.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifs_debug.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifs_debug.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifs_dfs_ref.c cifs: use correct format characters 2020-04-06 14:50:13 +02:00
cifs_fs_sb.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifs_ioctl.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifs_spnego.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifs_spnego.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifs_unicode.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifs_unicode.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifs_uniupr.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifsacl.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifsacl.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifsencrypt.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifsfs.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifsfs.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifsglob.h cifs: Fix cifsInodeInfo lock_sem deadlock when reconnect occurs 2020-04-07 09:29:13 +02:00
cifspdu.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cifsproto.h cifs: Fix cifsInodeInfo lock_sem deadlock when reconnect occurs 2020-04-07 09:29:13 +02:00
cifssmb.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
connect.c signal: Allow cifs and drbd to receive their terminating signals 2020-04-07 13:42:54 +02:00
dir.c CIFS: Force reval dentry if LOOKUP_REVAL flag is set 2020-04-07 08:09:52 +02:00
dns_resolve.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
dns_resolve.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
export.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
file.c CIFS: Respect O_SYNC and O_DIRECT flags during reconnect 2020-04-07 13:12:47 +02:00
fscache.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
fscache.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
inode.c CIFS: Force revalidate inode when dentry is stale 2020-04-07 08:14:25 +02:00
ioctl.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
Kconfig A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
link.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
Makefile A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
misc.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
netmisc.c fs: cifs: mute -Wunused-const-variable message 2020-04-07 09:27:39 +02:00
nterr.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
nterr.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
ntlmssp.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
readdir.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
rfc1002pdu.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
sess.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
smb1ops.c CIFS: avoid using MID 0xFFFF 2020-04-07 09:26:58 +02:00
smb2file.c cifs: Adjust indentation in smb2_open_file 2020-04-07 13:36:50 +02:00
smb2glob.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
smb2inode.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
smb2maperror.c SMB3: retry on STATUS_INSUFFICIENT_RESOURCES instead of failing write 2020-04-06 19:16:56 +02:00
smb2misc.c CIFS: Fix SMB2 oplock break processing 2020-04-07 12:45:47 +02:00
smb2ops.c CIFS: Fix oplock handling for SMB 2.1+ protocols 2020-04-07 07:41:09 +02:00
smb2pdu.c smb3: send CAP_DFS capability during session setup 2020-04-06 20:39:43 +02:00
smb2pdu.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
smb2proto.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
smb2status.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
smb2transport.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
smbencrypt.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
smberr.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
smbfsctl.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
transport.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
winucase.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
xattr.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30