scsi: sas: 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. This requires adding a pointer to hold the timer's target task, as there isn't a link back from slow_task. Cc: John Garry <john.garry@huawei.com> Cc: "James E.J. Bottomley" <jejb@linux.vnet.ibm.com> Cc: "Martin K. Petersen" <martin.petersen@oracle.com> Cc: Jack Wang <jinpu.wang@profitbricks.com> Cc: lindar_liu@usish.com Cc: Jens Axboe <axboe@fb.com> Cc: Hannes Reinecke <hare@suse.com> Cc: Johannes Thumshirn <jthumshirn@suse.de> Cc: Benjamin Block <bblock@linux.vnet.ibm.com> Cc: Baoyou Xie <baoyou.xie@linaro.org> Cc: Wei Yongjun <weiyongjun1@huawei.com> Cc: linux-scsi@vger.kernel.org Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Acked-by: John Garry <john.garry@huawei.com> # for hisi_sas part Tested-by: John Garry <john.garry@huawei.com> # basic sanity test for hisi_sas Reviewed-by: Jack Wang <jinpu.wang@profitbricks.com>
This commit is contained in:
@@ -41,9 +41,10 @@ static int sas_disable_routing(struct domain_device *dev, u8 *sas_addr);
|
||||
|
||||
/* ---------- SMP task management ---------- */
|
||||
|
||||
static void smp_task_timedout(unsigned long _task)
|
||||
static void smp_task_timedout(struct timer_list *t)
|
||||
{
|
||||
struct sas_task *task = (void *) _task;
|
||||
struct sas_task_slow *slow = from_timer(slow, t, timer);
|
||||
struct sas_task *task = slow->task;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&task->task_state_lock, flags);
|
||||
@@ -91,8 +92,7 @@ static int smp_execute_task_sg(struct domain_device *dev,
|
||||
|
||||
task->task_done = smp_task_done;
|
||||
|
||||
task->slow_task->timer.data = (unsigned long) task;
|
||||
task->slow_task->timer.function = smp_task_timedout;
|
||||
task->slow_task->timer.function = (TIMER_FUNC_TYPE)smp_task_timedout;
|
||||
task->slow_task->timer.expires = jiffies + SMP_TIMEOUT*HZ;
|
||||
add_timer(&task->slow_task->timer);
|
||||
|
||||
|
@@ -66,7 +66,8 @@ struct sas_task *sas_alloc_slow_task(gfp_t flags)
|
||||
}
|
||||
|
||||
task->slow_task = slow;
|
||||
init_timer(&slow->timer);
|
||||
slow->task = task;
|
||||
timer_setup(&slow->timer, NULL, 0);
|
||||
init_completion(&slow->completion);
|
||||
|
||||
return task;
|
||||
|
@@ -919,7 +919,7 @@ void sas_task_abort(struct sas_task *task)
|
||||
return;
|
||||
if (!del_timer(&slow->timer))
|
||||
return;
|
||||
slow->timer.function(slow->timer.data);
|
||||
slow->timer.function((TIMER_DATA_TYPE)&slow->timer);
|
||||
return;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user