mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
iscsi-target: Fix connection reset hang with percpu_ida_alloc
This patch addresses a bug where connection reset would hang indefinately once percpu_ida_alloc() was starved for tags, due to the fact that it always assumed uninterruptible sleep mode. So now make percpu_ida_alloc() check for signal_pending_state() for making interruptible sleep optional, and convert iscsit_allocate_cmd() to set TASK_INTERRUPTIBLE for GFP_KERNEL, or TASK_RUNNING for GFP_ATOMIC. Reported-by: Linus Torvalds <[email protected]> Cc: Kent Overstreet <[email protected]> Cc: <[email protected]> #3.12+ Signed-off-by: Nicholas Bellinger <[email protected]>
This commit is contained in:
parent
6f6b5d1ec5
commit
555b270e25
2 changed files with 8 additions and 3 deletions
|
|
@ -156,7 +156,7 @@ struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *conn, gfp_t gfp_mask)
|
|||
{
|
||||
struct iscsi_cmd *cmd;
|
||||
struct se_session *se_sess = conn->sess->se_sess;
|
||||
int size, tag, state = (gfp_mask & __GFP_WAIT) ? TASK_UNINTERRUPTIBLE :
|
||||
int size, tag, state = (gfp_mask & __GFP_WAIT) ? TASK_INTERRUPTIBLE :
|
||||
TASK_RUNNING;
|
||||
|
||||
tag = percpu_ida_alloc(&se_sess->sess_tag_pool, state);
|
||||
|
|
|
|||
Loading…
Reference in a new issue