aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/target/iscsi/iscsi_target_login.c
diff options
context:
space:
mode:
authorKees Cook <keescook@chromium.org>2017-10-22 14:58:45 -0700
committerKees Cook <keescook@chromium.org>2017-11-01 11:44:50 -0700
commitf7c9564a7cfa3ff69be74bcb1867c898772748b6 (patch)
tree0a78ebea3f176e5a0c2e7548545352c849772edd /drivers/target/iscsi/iscsi_target_login.c
parenttarget/iscsi: Simplify timer manipulation code (diff)
downloadwireguard-linux-f7c9564a7cfa3ff69be74bcb1867c898772748b6.tar.xz
wireguard-linux-f7c9564a7cfa3ff69be74bcb1867c898772748b6.zip
target/iscsi: Convert timers to use timer_setup()
In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to using the new timer_setup() and from_timer() to pass the timer pointer explicitly. Includes a fix for correcting an on-stack timer usage. Cc: "Nicholas A. Bellinger" <nab@linux-iscsi.org> Cc: Bart Van Assche <bart.vanassche@sandisk.com> Cc: Jiang Yi <jiangyilism@gmail.com> Cc: Varun Prakash <varun@chelsio.com> Cc: linux-scsi@vger.kernel.org Cc: target-devel@vger.kernel.org Reviewed-and-Tested-by: Bart Van Assche <Bart.VanAssche@wdc.com> Signed-off-by: Kees Cook <keescook@chromium.org>
Diffstat (limited to 'drivers/target/iscsi/iscsi_target_login.c')
-rw-r--r--drivers/target/iscsi/iscsi_target_login.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c
index 8be9221b6b9d..64c5a57b92e4 100644
--- a/drivers/target/iscsi/iscsi_target_login.c
+++ b/drivers/target/iscsi/iscsi_target_login.c
@@ -333,8 +333,8 @@ static int iscsi_login_zero_tsih_s1(
spin_lock_init(&sess->session_usage_lock);
spin_lock_init(&sess->ttt_lock);
- setup_timer(&sess->time2retain_timer, iscsit_handle_time2retain_timeout,
- (unsigned long)sess);
+ timer_setup(&sess->time2retain_timer,
+ iscsit_handle_time2retain_timeout, 0);
idr_preload(GFP_KERNEL);
spin_lock_bh(&sess_idr_lock);
@@ -842,9 +842,9 @@ void iscsi_post_login_handler(
iscsit_dec_conn_usage_count(conn);
}
-void iscsi_handle_login_thread_timeout(unsigned long data)
+void iscsi_handle_login_thread_timeout(struct timer_list *t)
{
- struct iscsi_np *np = (struct iscsi_np *) data;
+ struct iscsi_np *np = from_timer(np, t, np_login_timer);
spin_lock_bh(&np->np_thread_lock);
pr_err("iSCSI Login timeout on Network Portal %pISpc\n",
@@ -1265,10 +1265,9 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
pr_debug("Moving to TARG_CONN_STATE_FREE.\n");
conn->conn_state = TARG_CONN_STATE_FREE;
- setup_timer(&conn->nopin_response_timer,
- iscsit_handle_nopin_response_timeout, (unsigned long)conn);
- setup_timer(&conn->nopin_timer, iscsit_handle_nopin_timeout,
- (unsigned long)conn);
+ timer_setup(&conn->nopin_response_timer,
+ iscsit_handle_nopin_response_timeout, 0);
+ timer_setup(&conn->nopin_timer, iscsit_handle_nopin_timeout, 0);
if (iscsit_conn_set_transport(conn, np->np_transport) < 0) {
kfree(conn);