]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
scsi: aic94xx: Convert timers to use timer_setup()
authorKees Cook <keescook@chromium.org>
Wed, 11 Oct 2017 22:53:34 +0000 (15:53 -0700)
committerKees Cook <keescook@chromium.org>
Fri, 27 Oct 2017 09:22:00 +0000 (02:22 -0700)
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" <martin.petersen@oracle.com>
Cc: "James E.J. Bottomley" <jejb@linux.vnet.ibm.com>
Cc: Tomas Henzl <thenzl@redhat.com>
Cc: Quentin Lambert <lambert.quentin@gmail.com>
Cc: linux-scsi@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/aic94xx/aic94xx_hwi.c
drivers/scsi/aic94xx/aic94xx_hwi.h
drivers/scsi/aic94xx/aic94xx_scb.c
drivers/scsi/aic94xx/aic94xx_tmf.c

index f2671a8fa7e3358f304c539e7431d73733b95258..7cbc7213b2b23a8a3b751e846396e427762666fd 100644 (file)
@@ -1178,8 +1178,7 @@ static void asd_start_scb_timers(struct list_head *list)
        struct asd_ascb *ascb;
        list_for_each_entry(ascb, list, list) {
                if (!ascb->uldd_timer) {
-                       ascb->timer.data = (unsigned long) ascb;
-                       ascb->timer.function = asd_ascb_timedout;
+                       ascb->timer.function = (TIMER_FUNC_TYPE)asd_ascb_timedout;
                        ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT;
                        add_timer(&ascb->timer);
                }
index 8c1c28239e9307bfd5f30aadad0f2ba852d961c8..8f147e720cfdfe54234eb36a0a8633620276086b 100644 (file)
@@ -291,8 +291,7 @@ static inline void asd_init_ascb(struct asd_ha_struct *asd_ha,
        INIT_LIST_HEAD(&ascb->list);
        ascb->scb = ascb->dma_scb.vaddr;
        ascb->ha = asd_ha;
-       ascb->timer.function = NULL;
-       init_timer(&ascb->timer);
+       timer_setup(&ascb->timer, NULL, 0);
        ascb->tc_index = -1;
 }
 
@@ -392,7 +391,7 @@ void asd_control_led(struct asd_ha_struct *asd_ha, int phy_id, int op);
 void asd_turn_led(struct asd_ha_struct *asd_ha, int phy_id, int op);
 int  asd_enable_phys(struct asd_ha_struct *asd_ha, const u8 phy_mask);
 
-void asd_ascb_timedout(unsigned long data);
+void asd_ascb_timedout(struct timer_list *t);
 int  asd_chip_hardrst(struct asd_ha_struct *asd_ha);
 
 #endif
index fdac7c2fef379bdddd6570d1229bada750c6643b..22873ce8bbfaaf3b97c8d169e251eff8fdc50203 100644 (file)
@@ -866,12 +866,12 @@ void asd_build_initiate_link_adm_task(struct asd_ascb *ascb, int phy_id,
  * Upper layers can implement their own timeout function, say to free
  * resources they have with this SCB, and then call this one at the
  * end of their timeout function.  To do this, one should initialize
- * the ascb->timer.{function, data, expires} prior to calling the post
+ * the ascb->timer.{function, expires} prior to calling the post
  * function. The timer is started by the post function.
  */
-void asd_ascb_timedout(unsigned long data)
+void asd_ascb_timedout(struct timer_list *t)
 {
-       struct asd_ascb *ascb = (void *) data;
+       struct asd_ascb *ascb = from_timer(ascb, t, timer);
        struct asd_seq_data *seq = &ascb->ha->seq;
        unsigned long flags;
 
index d4c35df3d4ae600f9e5d0d7a02ed547f4c8ff905..4637119c09d8aad052c566cf6e9fb2d16c7e87f3 100644 (file)
 static int asd_enqueue_internal(struct asd_ascb *ascb,
                void (*tasklet_complete)(struct asd_ascb *,
                                         struct done_list_struct *),
-                               void (*timed_out)(unsigned long))
+                               void (*timed_out)(struct timer_list *t))
 {
        int res;
 
        ascb->tasklet_complete = tasklet_complete;
        ascb->uldd_timer = 1;
 
-       ascb->timer.data = (unsigned long) ascb;
-       ascb->timer.function = timed_out;
+       ascb->timer.function = (TIMER_FUNC_TYPE)timed_out;
        ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT;
 
        add_timer(&ascb->timer);
@@ -87,9 +86,9 @@ static void asd_clear_nexus_tasklet_complete(struct asd_ascb *ascb,
        asd_ascb_free(ascb);
 }
 
-static void asd_clear_nexus_timedout(unsigned long data)
+static void asd_clear_nexus_timedout(struct timer_list *t)
 {
-       struct asd_ascb *ascb = (void *)data;
+       struct asd_ascb *ascb = from_timer(ascb, t, timer);
        struct tasklet_completion_status *tcs = ascb->uldd_task;
 
        ASD_DPRINTK("%s: here\n", __func__);
@@ -261,9 +260,9 @@ static int asd_clear_nexus_index(struct sas_task *task)
 
 /* ---------- TMFs ---------- */
 
-static void asd_tmf_timedout(unsigned long data)
+static void asd_tmf_timedout(struct timer_list *t)
 {
-       struct asd_ascb *ascb = (void *) data;
+       struct asd_ascb *ascb = from_timer(ascb, t, timer);
        struct tasklet_completion_status *tcs = ascb->uldd_task;
 
        ASD_DPRINTK("tmf timed out\n");