Commit 4966babd authored by Kees Cook's avatar Kees Cook Committed by David S. Miller

net/rose: 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: Ralf Baechle <ralf@linux-mips.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: linux-hams@vger.kernel.org
Cc: netdev@vger.kernel.org
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 83a37b32
...@@ -318,9 +318,11 @@ void rose_destroy_socket(struct sock *); ...@@ -318,9 +318,11 @@ void rose_destroy_socket(struct sock *);
/* /*
* Handler for deferred kills. * Handler for deferred kills.
*/ */
static void rose_destroy_timer(unsigned long data) static void rose_destroy_timer(struct timer_list *t)
{ {
rose_destroy_socket((struct sock *)data); struct sock *sk = from_timer(sk, t, sk_timer);
rose_destroy_socket(sk);
} }
/* /*
...@@ -353,8 +355,7 @@ void rose_destroy_socket(struct sock *sk) ...@@ -353,8 +355,7 @@ void rose_destroy_socket(struct sock *sk)
if (sk_has_allocations(sk)) { if (sk_has_allocations(sk)) {
/* Defer: outstanding buffers */ /* Defer: outstanding buffers */
setup_timer(&sk->sk_timer, rose_destroy_timer, timer_setup(&sk->sk_timer, rose_destroy_timer, 0);
(unsigned long)sk);
sk->sk_timer.expires = jiffies + 10 * HZ; sk->sk_timer.expires = jiffies + 10 * HZ;
add_timer(&sk->sk_timer); add_timer(&sk->sk_timer);
} else } else
...@@ -538,8 +539,8 @@ static int rose_create(struct net *net, struct socket *sock, int protocol, ...@@ -538,8 +539,8 @@ static int rose_create(struct net *net, struct socket *sock, int protocol,
sock->ops = &rose_proto_ops; sock->ops = &rose_proto_ops;
sk->sk_protocol = protocol; sk->sk_protocol = protocol;
init_timer(&rose->timer); timer_setup(&rose->timer, NULL, 0);
init_timer(&rose->idletimer); timer_setup(&rose->idletimer, NULL, 0);
rose->t1 = msecs_to_jiffies(sysctl_rose_call_request_timeout); rose->t1 = msecs_to_jiffies(sysctl_rose_call_request_timeout);
rose->t2 = msecs_to_jiffies(sysctl_rose_reset_request_timeout); rose->t2 = msecs_to_jiffies(sysctl_rose_reset_request_timeout);
...@@ -582,8 +583,8 @@ static struct sock *rose_make_new(struct sock *osk) ...@@ -582,8 +583,8 @@ static struct sock *rose_make_new(struct sock *osk)
sk->sk_state = TCP_ESTABLISHED; sk->sk_state = TCP_ESTABLISHED;
sock_copy_flags(sk, osk); sock_copy_flags(sk, osk);
init_timer(&rose->timer); timer_setup(&rose->timer, NULL, 0);
init_timer(&rose->idletimer); timer_setup(&rose->idletimer, NULL, 0);
orose = rose_sk(osk); orose = rose_sk(osk);
rose->t1 = orose->t1; rose->t1 = orose->t1;
......
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <net/rose.h> #include <net/rose.h>
static void rose_ftimer_expiry(unsigned long); static void rose_ftimer_expiry(struct timer_list *);
static void rose_t0timer_expiry(unsigned long); static void rose_t0timer_expiry(struct timer_list *);
static void rose_transmit_restart_confirmation(struct rose_neigh *neigh); static void rose_transmit_restart_confirmation(struct rose_neigh *neigh);
static void rose_transmit_restart_request(struct rose_neigh *neigh); static void rose_transmit_restart_request(struct rose_neigh *neigh);
...@@ -37,8 +37,7 @@ void rose_start_ftimer(struct rose_neigh *neigh) ...@@ -37,8 +37,7 @@ void rose_start_ftimer(struct rose_neigh *neigh)
{ {
del_timer(&neigh->ftimer); del_timer(&neigh->ftimer);
neigh->ftimer.data = (unsigned long)neigh; neigh->ftimer.function = (TIMER_FUNC_TYPE)rose_ftimer_expiry;
neigh->ftimer.function = &rose_ftimer_expiry;
neigh->ftimer.expires = neigh->ftimer.expires =
jiffies + msecs_to_jiffies(sysctl_rose_link_fail_timeout); jiffies + msecs_to_jiffies(sysctl_rose_link_fail_timeout);
...@@ -49,8 +48,7 @@ static void rose_start_t0timer(struct rose_neigh *neigh) ...@@ -49,8 +48,7 @@ static void rose_start_t0timer(struct rose_neigh *neigh)
{ {
del_timer(&neigh->t0timer); del_timer(&neigh->t0timer);
neigh->t0timer.data = (unsigned long)neigh; neigh->t0timer.function = (TIMER_FUNC_TYPE)rose_t0timer_expiry;
neigh->t0timer.function = &rose_t0timer_expiry;
neigh->t0timer.expires = neigh->t0timer.expires =
jiffies + msecs_to_jiffies(sysctl_rose_restart_request_timeout); jiffies + msecs_to_jiffies(sysctl_rose_restart_request_timeout);
...@@ -77,13 +75,13 @@ static int rose_t0timer_running(struct rose_neigh *neigh) ...@@ -77,13 +75,13 @@ static int rose_t0timer_running(struct rose_neigh *neigh)
return timer_pending(&neigh->t0timer); return timer_pending(&neigh->t0timer);
} }
static void rose_ftimer_expiry(unsigned long param) static void rose_ftimer_expiry(struct timer_list *t)
{ {
} }
static void rose_t0timer_expiry(unsigned long param) static void rose_t0timer_expiry(struct timer_list *t)
{ {
struct rose_neigh *neigh = (struct rose_neigh *)param; struct rose_neigh *neigh = from_timer(neigh, t, t0timer);
rose_transmit_restart_request(neigh); rose_transmit_restart_request(neigh);
......
...@@ -19,12 +19,13 @@ static struct sk_buff_head loopback_queue; ...@@ -19,12 +19,13 @@ static struct sk_buff_head loopback_queue;
static struct timer_list loopback_timer; static struct timer_list loopback_timer;
static void rose_set_loopback_timer(void); static void rose_set_loopback_timer(void);
static void rose_loopback_timer(struct timer_list *unused);
void rose_loopback_init(void) void rose_loopback_init(void)
{ {
skb_queue_head_init(&loopback_queue); skb_queue_head_init(&loopback_queue);
init_timer(&loopback_timer); timer_setup(&loopback_timer, rose_loopback_timer, 0);
} }
static int rose_loopback_running(void) static int rose_loopback_running(void)
...@@ -50,20 +51,16 @@ int rose_loopback_queue(struct sk_buff *skb, struct rose_neigh *neigh) ...@@ -50,20 +51,16 @@ int rose_loopback_queue(struct sk_buff *skb, struct rose_neigh *neigh)
return 1; return 1;
} }
static void rose_loopback_timer(unsigned long);
static void rose_set_loopback_timer(void) static void rose_set_loopback_timer(void)
{ {
del_timer(&loopback_timer); del_timer(&loopback_timer);
loopback_timer.data = 0;
loopback_timer.function = &rose_loopback_timer;
loopback_timer.expires = jiffies + 10; loopback_timer.expires = jiffies + 10;
add_timer(&loopback_timer); add_timer(&loopback_timer);
} }
static void rose_loopback_timer(unsigned long param) static void rose_loopback_timer(struct timer_list *unused)
{ {
struct sk_buff *skb; struct sk_buff *skb;
struct net_device *dev; struct net_device *dev;
......
...@@ -104,8 +104,8 @@ static int __must_check rose_add_node(struct rose_route_struct *rose_route, ...@@ -104,8 +104,8 @@ static int __must_check rose_add_node(struct rose_route_struct *rose_route,
skb_queue_head_init(&rose_neigh->queue); skb_queue_head_init(&rose_neigh->queue);
init_timer(&rose_neigh->ftimer); timer_setup(&rose_neigh->ftimer, NULL, 0);
init_timer(&rose_neigh->t0timer); timer_setup(&rose_neigh->t0timer, NULL, 0);
if (rose_route->ndigis != 0) { if (rose_route->ndigis != 0) {
rose_neigh->digipeat = rose_neigh->digipeat =
...@@ -390,8 +390,8 @@ void rose_add_loopback_neigh(void) ...@@ -390,8 +390,8 @@ void rose_add_loopback_neigh(void)
skb_queue_head_init(&sn->queue); skb_queue_head_init(&sn->queue);
init_timer(&sn->ftimer); timer_setup(&sn->ftimer, NULL, 0);
init_timer(&sn->t0timer); timer_setup(&sn->t0timer, NULL, 0);
spin_lock_bh(&rose_neigh_list_lock); spin_lock_bh(&rose_neigh_list_lock);
sn->next = rose_neigh_list; sn->next = rose_neigh_list;
......
...@@ -29,8 +29,8 @@ ...@@ -29,8 +29,8 @@
#include <net/rose.h> #include <net/rose.h>
static void rose_heartbeat_expiry(unsigned long); static void rose_heartbeat_expiry(unsigned long);
static void rose_timer_expiry(unsigned long); static void rose_timer_expiry(struct timer_list *);
static void rose_idletimer_expiry(unsigned long); static void rose_idletimer_expiry(struct timer_list *);
void rose_start_heartbeat(struct sock *sk) void rose_start_heartbeat(struct sock *sk)
{ {
...@@ -49,8 +49,7 @@ void rose_start_t1timer(struct sock *sk) ...@@ -49,8 +49,7 @@ void rose_start_t1timer(struct sock *sk)
del_timer(&rose->timer); del_timer(&rose->timer);
rose->timer.data = (unsigned long)sk; rose->timer.function = (TIMER_FUNC_TYPE)rose_timer_expiry;
rose->timer.function = &rose_timer_expiry;
rose->timer.expires = jiffies + rose->t1; rose->timer.expires = jiffies + rose->t1;
add_timer(&rose->timer); add_timer(&rose->timer);
...@@ -62,8 +61,7 @@ void rose_start_t2timer(struct sock *sk) ...@@ -62,8 +61,7 @@ void rose_start_t2timer(struct sock *sk)
del_timer(&rose->timer); del_timer(&rose->timer);
rose->timer.data = (unsigned long)sk; rose->timer.function = (TIMER_FUNC_TYPE)rose_timer_expiry;
rose->timer.function = &rose_timer_expiry;
rose->timer.expires = jiffies + rose->t2; rose->timer.expires = jiffies + rose->t2;
add_timer(&rose->timer); add_timer(&rose->timer);
...@@ -75,8 +73,7 @@ void rose_start_t3timer(struct sock *sk) ...@@ -75,8 +73,7 @@ void rose_start_t3timer(struct sock *sk)
del_timer(&rose->timer); del_timer(&rose->timer);
rose->timer.data = (unsigned long)sk; rose->timer.function = (TIMER_FUNC_TYPE)rose_timer_expiry;
rose->timer.function = &rose_timer_expiry;
rose->timer.expires = jiffies + rose->t3; rose->timer.expires = jiffies + rose->t3;
add_timer(&rose->timer); add_timer(&rose->timer);
...@@ -88,8 +85,7 @@ void rose_start_hbtimer(struct sock *sk) ...@@ -88,8 +85,7 @@ void rose_start_hbtimer(struct sock *sk)
del_timer(&rose->timer); del_timer(&rose->timer);
rose->timer.data = (unsigned long)sk; rose->timer.function = (TIMER_FUNC_TYPE)rose_timer_expiry;
rose->timer.function = &rose_timer_expiry;
rose->timer.expires = jiffies + rose->hb; rose->timer.expires = jiffies + rose->hb;
add_timer(&rose->timer); add_timer(&rose->timer);
...@@ -102,8 +98,7 @@ void rose_start_idletimer(struct sock *sk) ...@@ -102,8 +98,7 @@ void rose_start_idletimer(struct sock *sk)
del_timer(&rose->idletimer); del_timer(&rose->idletimer);
if (rose->idle > 0) { if (rose->idle > 0) {
rose->idletimer.data = (unsigned long)sk; rose->idletimer.function = (TIMER_FUNC_TYPE)rose_idletimer_expiry;
rose->idletimer.function = &rose_idletimer_expiry;
rose->idletimer.expires = jiffies + rose->idle; rose->idletimer.expires = jiffies + rose->idle;
add_timer(&rose->idletimer); add_timer(&rose->idletimer);
...@@ -163,10 +158,10 @@ static void rose_heartbeat_expiry(unsigned long param) ...@@ -163,10 +158,10 @@ static void rose_heartbeat_expiry(unsigned long param)
bh_unlock_sock(sk); bh_unlock_sock(sk);
} }
static void rose_timer_expiry(unsigned long param) static void rose_timer_expiry(struct timer_list *t)
{ {
struct sock *sk = (struct sock *)param; struct rose_sock *rose = from_timer(rose, t, timer);
struct rose_sock *rose = rose_sk(sk); struct sock *sk = &rose->sock;
bh_lock_sock(sk); bh_lock_sock(sk);
switch (rose->state) { switch (rose->state) {
...@@ -192,9 +187,10 @@ static void rose_timer_expiry(unsigned long param) ...@@ -192,9 +187,10 @@ static void rose_timer_expiry(unsigned long param)
bh_unlock_sock(sk); bh_unlock_sock(sk);
} }
static void rose_idletimer_expiry(unsigned long param) static void rose_idletimer_expiry(struct timer_list *t)
{ {
struct sock *sk = (struct sock *)param; struct rose_sock *rose = from_timer(rose, t, idletimer);
struct sock *sk = &rose->sock;
bh_lock_sock(sk); bh_lock_sock(sk);
rose_clear_queues(sk); rose_clear_queues(sk);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment