cifs: No need to send SIGKILL to demux_thread during umount
There is no need to explicitly send SIGKILL to cifs_demultiplex_thread as it is calling module_put_and_exit to exit cleanly. socket sk_rcvtimeo is set to 7 HZ so the thread will wake up in 7 seconds and clean itself. Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com> Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com> Acked-by: Jeff Layton <jlayton@samba.org> Signed-off-by: Steve French <smfrench@gmail.com>
This commit is contained in:
parent
787aded650
commit
52a3624444
|
@ -837,7 +837,6 @@ cifs_demultiplex_thread(void *p)
|
||||||
struct TCP_Server_Info *server = p;
|
struct TCP_Server_Info *server = p;
|
||||||
unsigned int pdu_length;
|
unsigned int pdu_length;
|
||||||
char *buf = NULL;
|
char *buf = NULL;
|
||||||
struct task_struct *task_to_wake = NULL;
|
|
||||||
struct mid_q_entry *mid_entry;
|
struct mid_q_entry *mid_entry;
|
||||||
|
|
||||||
current->flags |= PF_MEMALLOC;
|
current->flags |= PF_MEMALLOC;
|
||||||
|
@ -928,19 +927,7 @@ cifs_demultiplex_thread(void *p)
|
||||||
if (server->smallbuf) /* no sense logging a debug message if NULL */
|
if (server->smallbuf) /* no sense logging a debug message if NULL */
|
||||||
cifs_small_buf_release(server->smallbuf);
|
cifs_small_buf_release(server->smallbuf);
|
||||||
|
|
||||||
task_to_wake = xchg(&server->tsk, NULL);
|
|
||||||
clean_demultiplex_info(server);
|
clean_demultiplex_info(server);
|
||||||
|
|
||||||
/* if server->tsk was NULL then wait for a signal before exiting */
|
|
||||||
if (!task_to_wake) {
|
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
|
||||||
while (!signal_pending(current)) {
|
|
||||||
schedule();
|
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
|
||||||
}
|
|
||||||
set_current_state(TASK_RUNNING);
|
|
||||||
}
|
|
||||||
|
|
||||||
module_put_and_exit(0);
|
module_put_and_exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2063,8 +2050,6 @@ cifs_find_tcp_session(struct smb_vol *vol)
|
||||||
static void
|
static void
|
||||||
cifs_put_tcp_session(struct TCP_Server_Info *server)
|
cifs_put_tcp_session(struct TCP_Server_Info *server)
|
||||||
{
|
{
|
||||||
struct task_struct *task;
|
|
||||||
|
|
||||||
spin_lock(&cifs_tcp_ses_lock);
|
spin_lock(&cifs_tcp_ses_lock);
|
||||||
if (--server->srv_count > 0) {
|
if (--server->srv_count > 0) {
|
||||||
spin_unlock(&cifs_tcp_ses_lock);
|
spin_unlock(&cifs_tcp_ses_lock);
|
||||||
|
@ -2088,10 +2073,6 @@ cifs_put_tcp_session(struct TCP_Server_Info *server)
|
||||||
kfree(server->session_key.response);
|
kfree(server->session_key.response);
|
||||||
server->session_key.response = NULL;
|
server->session_key.response = NULL;
|
||||||
server->session_key.len = 0;
|
server->session_key.len = 0;
|
||||||
|
|
||||||
task = xchg(&server->tsk, NULL);
|
|
||||||
if (task)
|
|
||||||
force_sig(SIGKILL, task);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct TCP_Server_Info *
|
static struct TCP_Server_Info *
|
||||||
|
|
Loading…
Reference in New Issue