scsi: ibmvscsi: Convert timers to use timer_setup()
Subsystems (4)
PATCH 1/1 scsi: ibmvscsi: 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.
Cc "Martin K. Petersen" <[email protected]>
Cc Tyrel Datwyler <[email protected]>
Cc Benjamin Herrenschmidt <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Michael Ellerman <[email protected]>
Cc "James E.J. Bottomley" <[email protected]>
Signed-off-by Kees Cook <[email protected]>
---
This requires commit 686fef928bba ("timer: Prepare to change timer callback argument type") in v4.14-rc3, but should be otherwise stand-alone.
--- drivers/scsi/ibmvscsi/ibmvfc.c | 14 ++++++-------- drivers/scsi/ibmvscsi/ibmvscsi.c | 7 +++---- 2 files changed, 9 insertions(+), 12 deletions(-)
drivers/scsi/ibmvscsi/ibmvfc.c +6 -8
@@ -1393,8 +1393,9 @@ static int ibmvfc_map_sg_data(struct scsi_cmnd *scmd,* * Called when an internally generated command times out **/ -static void ibmvfc_timeout (struct ibmvfc_event *evt) +static void ibmvfc_timeout (struct timer_list *t) { +struct ibmvfc_event *evt =from_timer (evt, t, timer);struct ibmvfc_host *vhost = evt->vhost;dev_err (vhost->dev,"Command timed out (%p). Resetting connection\n" , evt);ibmvfc_reset_host (vhost);
@@ -1424,12 +1425,10 @@ static int ibmvfc_send_event(struct ibmvfc_event *evt,BUG ();list_add_tail (&evt->queue, &vhost->sent); -init_timer (&evt->timer); +timer_setup (&evt->timer, ibmvfc_timeout,0 );if (timeout) { - evt->timer.data = (unsigned long ) evt; evt->timer.expires = jiffies + (timeout *HZ ); - evt->timer.function = (void (*)(unsigned long ))ibmvfc_timeout;add_timer (&evt->timer); }
@@ -3692,8 +3691,9 @@ static void ibmvfc_tgt_adisc_cancel_done(struct ibmvfc_event *evt)* out, reset the CRQ. When the ADISC comes back as cancelled, * log back into the target. **/ -static void ibmvfc_adisc_timeout (struct ibmvfc_target *tgt) +static void ibmvfc_adisc_timeout (struct timer_list *t) { +struct ibmvfc_target *tgt =from_timer (tgt, t, timer);struct ibmvfc_host *vhost = tgt->vhost;struct ibmvfc_event *evt;struct ibmvfc_tmf *tmf;
@@ -3778,9 +3778,7 @@ static void ibmvfc_tgt_adisc(struct ibmvfc_target *tgt)if (timer_pending (&tgt->timer))mod_timer (&tgt->timer, jiffies + (IBMVFC_ADISC_TIMEOUT *HZ ));else { - tgt->timer.data = (unsigned long ) tgt; tgt->timer.expires = jiffies + (IBMVFC_ADISC_TIMEOUT *HZ ); - tgt->timer.function = (void (*)(unsigned long ))ibmvfc_adisc_timeout;add_timer (&tgt->timer); }
@@ -3912,7 +3910,7 @@ static int ibmvfc_alloc_target(struct ibmvfc_host *vhost, u64 scsi_id) tgt->vhost = vhost; tgt->need_login =1 ; tgt->cancel_key = vhost->task_set++; -init_timer (&tgt->timer); +timer_setup (&tgt->timer, ibmvfc_adisc_timeout,0 );kref_init (&tgt->kref);ibmvfc_init_tgt (tgt, ibmvfc_tgt_implicit_logout);spin_lock_irqsave (vhost->host->host_lock, flags);
drivers/scsi/ibmvscsi/ibmvscsi.c +3 -4
@@ -837,8 +837,9 @@ static void ibmvscsi_reset_host(struct ibmvscsi_host_data *hostdata)* * Called when an internally generated command times out */ -static void ibmvscsi_timeout (struct srp_event_struct *evt_struct) +static void ibmvscsi_timeout (struct timer_list *t) { +struct srp_event_struct *evt_struct =from_timer (evt_struct, t, timer);struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; dev_err(hostdata->dev, "Command timed out (%x). Resetting connection\n",
@@ -927,11 +928,9 @@ static int ibmvscsi_send_srp_event(struct srp_event_struct *evt_struct,*/ list_add_tail (&evt_struct->list, &hostdata->sent); -init_timer (&evt_struct->timer); +timer_setup (&evt_struct->timer, ibmvscsi_timeout,0 );if (timeout) { - evt_struct->timer.data = (unsigned long ) evt_struct; evt_struct->timer.expires = jiffies + (timeout *HZ ); - evt_struct->timer.function = (void (*)(unsigned long ))ibmvscsi_timeout;add_timer (&evt_struct->timer); }
Signature · 6 lines
2.7.4 -- Kees Cook Pixel Security