> 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=5720