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: Stefan Richter <[email protected]>
Cc: [email protected]
Cc: Thomas Gleixner <[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/firewire/core-transaction.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/firewire/core-transaction.c 
b/drivers/firewire/core-transaction.c
index d6a09b9cd8cc..6c4994487d49 100644
--- a/drivers/firewire/core-transaction.c
+++ b/drivers/firewire/core-transaction.c
@@ -137,9 +137,10 @@ int fw_cancel_transaction(struct fw_card *card,
 }
 EXPORT_SYMBOL(fw_cancel_transaction);
 
-static void split_transaction_timeout_callback(unsigned long data)
+static void split_transaction_timeout_callback(struct timer_list *timer)
 {
-       struct fw_transaction *t = (struct fw_transaction *)data;
+       struct fw_transaction *t = from_timer(t, timer,
+                                                  split_timeout_timer);
        struct fw_card *card = t->card;
        unsigned long flags;
 
@@ -373,8 +374,8 @@ void fw_send_request(struct fw_card *card, struct 
fw_transaction *t, int tcode,
        t->tlabel = tlabel;
        t->card = card;
        t->is_split_transaction = false;
-       setup_timer(&t->split_timeout_timer,
-                   split_transaction_timeout_callback, (unsigned long)t);
+       timer_setup(&t->split_timeout_timer,
+                   split_transaction_timeout_callback, 0);
        t->callback = callback;
        t->callback_data = callback_data;
 
-- 
2.7.4


-- 
Kees Cook
Pixel Security

Reply via email to