提交 5d9c7206 编写于 作者: J Jeff 提交者: Steve French

[CIFS] Do not allow signals in cifs_demultiplex_thread

Switch from send_sig to force_sig and do not allow signal for this
background thread (the signal is needed to wakeup the thread when
blocked in the network stack).
Signed-off-by: NJeff Layton <jlayton@readhat.com>
Signed-off-by: NSteve French <sfrench@us.ibm.com>
上级 ffdd6e4d
...@@ -348,7 +348,6 @@ cifs_demultiplex_thread(struct TCP_Server_Info *server) ...@@ -348,7 +348,6 @@ cifs_demultiplex_thread(struct TCP_Server_Info *server)
int isMultiRsp; int isMultiRsp;
int reconnect; int reconnect;
allow_signal(SIGKILL);
current->flags |= PF_MEMALLOC; current->flags |= PF_MEMALLOC;
server->tsk = current; /* save process info to wake at shutdown */ server->tsk = current; /* save process info to wake at shutdown */
cFYI(1, ("Demultiplex PID: %d", current->pid)); cFYI(1, ("Demultiplex PID: %d", current->pid));
...@@ -2089,7 +2088,7 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb, ...@@ -2089,7 +2088,7 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
always wake up processes blocked in always wake up processes blocked in
tcp in recv_mesg then we could remove the tcp in recv_mesg then we could remove the
send_sig call */ send_sig call */
send_sig(SIGKILL,srvTcp->tsk,1); force_sig(SIGKILL,srvTcp->tsk);
tsk = srvTcp->tsk; tsk = srvTcp->tsk;
if(tsk) if(tsk)
kthread_stop(tsk); kthread_stop(tsk);
...@@ -2106,9 +2105,11 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb, ...@@ -2106,9 +2105,11 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
temp_rc = CIFSSMBLogoff(xid, pSesInfo); temp_rc = CIFSSMBLogoff(xid, pSesInfo);
/* if the socketUseCount is now zero */ /* if the socketUseCount is now zero */
if ((temp_rc == -ESHUTDOWN) && if ((temp_rc == -ESHUTDOWN) &&
(pSesInfo->server) && (pSesInfo->server->tsk)) { (pSesInfo->server) &&
(pSesInfo->server->tsk)) {
struct task_struct *tsk; struct task_struct *tsk;
send_sig(SIGKILL,pSesInfo->server->tsk,1); force_sig(SIGKILL,
pSesInfo->server->tsk);
tsk = pSesInfo->server->tsk; tsk = pSesInfo->server->tsk;
if (tsk) if (tsk)
kthread_stop(tsk); kthread_stop(tsk);
...@@ -3364,9 +3365,9 @@ cifs_umount(struct super_block *sb, struct cifs_sb_info *cifs_sb) ...@@ -3364,9 +3365,9 @@ cifs_umount(struct super_block *sb, struct cifs_sb_info *cifs_sb)
FreeXid(xid); FreeXid(xid);
return 0; return 0;
} else if (rc == -ESHUTDOWN) { } else if (rc == -ESHUTDOWN) {
cFYI(1,("Waking up socket by sending it signal")); cFYI(1,("Waking up socket by sending signal"));
if (cifsd_task) { if (cifsd_task) {
send_sig(SIGKILL,cifsd_task,1); force_sig(SIGKILL,cifsd_task);
kthread_stop(cifsd_task); kthread_stop(cifsd_task);
} }
rc = 0; rc = 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册