• J
    [CIFS] eliminate usage of kthread_stop for cifsd · 469ee614
    Jeff Layton 提交于
    When cifs_demultiplex_thread was converted to a kthread based kernel
    thread, great pains were taken to make it so that kthread_stop would be
    used to bring it down. This just added unnecessary complexity since we
    needed to use a signal anyway to break out of kernel_recvmsg.
    
    Also, cifs_demultiplex_thread does a bit of cleanup as it's exiting, and
    we need to be certain that this gets done. It's possible for a kthread
    to exit before its main function is ever run if kthread_stop is called
    soon after its creation. While I'm not sure that this is a real problem
    with cifsd now, it could be at some point in the future if cifs_mount is
    ever changed to bring down the thread quickly.
    
    The upshot here is that using kthread_stop to bring down the thread just
    adds extra complexity with no real benefit. This patch changes the code
    to use the original method to bring down the thread, but still leaves it
    so that the thread is actually started with kthread_run.
    
    This seems to fix the deadlock caused by the reproducer in this bug
    report:
    
    https://bugzilla.samba.org/show_bug.cgi?id=5720Signed-off-by: NJeff Layton <jlayton@redhat.com>
    Signed-off-by: NSteve French <sfrench@us.ibm.com>
    469ee614
connect.c 109.0 KB