In working on the smb2 client implementation, I noticed that there is a problem with the revised kthread logic which takes down cifsd (cifs_demultiplex_thread) on umount or on abnormal socket termination during protocol negotiation. I noticed this while looking at SMB2 since the Samba 4 SMB2 server was not handling the new SMB2 Negotiate protocol request (and unlike Windows Server 2008) and was closing the tcp session immediately after receiving the negprot request from the client. An unexpected error on negprot which causes the TCP session to close will cause cifsd to exit, but now this blocks forever at kthread_should_stop just after the main loop in cifs_demultiplex_thread. The task doing mount is blocked in wait_event on the response_q but will never be woken up by cifsd (even though it would timeout if some one did wake it up once the 15 second timeout was expired). umount will never call kthread_stop because mount never succeeded - we do not have a tree connection yet (so tcon is null and we can't get to tcon->ses->server) and the failed mount won't call kthread_stop because it is stuck in wait_event with no one to wake up response_q. Adding a call to wake_up_all(&server->response_q) right after we set server->tcpStatus = CifsExiting at the end of the loop in cifs_demultiplex_thread but before we wait for kthread_stop works in my testing. -- Thanks, Steve -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html