net: tipc: Convert timers to use timer_setup()
authorKees Cook <keescook@chromium.org>
Mon, 30 Oct 2017 21:06:45 +0000 (14:06 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 1 Nov 2017 03:38:45 +0000 (12:38 +0900)
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: Jon Maloy <jon.maloy@ericsson.com>
Cc: Ying Xue <ying.xue@windriver.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: netdev@vger.kernel.org
Cc: tipc-discussion@lists.sourceforge.net
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/discover.c
net/tipc/monitor.c
net/tipc/node.c
net/tipc/socket.c
net/tipc/subscr.c

index 02462d67d1914b6e4b20c4daf7a493b29049a2e4..92e4828c6b09d5bddcfbbec634a5dba6dfbc08de 100644 (file)
@@ -224,9 +224,9 @@ void tipc_disc_remove_dest(struct tipc_link_req *req)
  *
  * Called whenever a link setup request timer associated with a bearer expires.
  */
-static void disc_timeout(unsigned long data)
+static void disc_timeout(struct timer_list *t)
 {
-       struct tipc_link_req *req = (struct tipc_link_req *)data;
+       struct tipc_link_req *req = from_timer(req, t, timer);
        struct sk_buff *skb;
        int max_delay;
 
@@ -292,7 +292,7 @@ int tipc_disc_create(struct net *net, struct tipc_bearer *b,
        req->num_nodes = 0;
        req->timer_intv = TIPC_LINK_REQ_INIT;
        spin_lock_init(&req->lock);
-       setup_timer(&req->timer, disc_timeout, (unsigned long)req);
+       timer_setup(&req->timer, disc_timeout, 0);
        mod_timer(&req->timer, jiffies + req->timer_intv);
        b->link_req = req;
        *skb = skb_clone(req->buf, GFP_ATOMIC);
index 9e109bb1a2071836323d41b77e903644b28c7b73..b9c32557d73cc5ebb29b57efeb102b121f365875 100644 (file)
@@ -578,9 +578,9 @@ void tipc_mon_get_state(struct net *net, u32 addr,
        read_unlock_bh(&mon->lock);
 }
 
-static void mon_timeout(unsigned long m)
+static void mon_timeout(struct timer_list *t)
 {
-       struct tipc_monitor *mon = (void *)m;
+       struct tipc_monitor *mon = from_timer(mon, t, timer);
        struct tipc_peer *self;
        int best_member_cnt = dom_size(mon->peer_cnt) - 1;
 
@@ -623,7 +623,7 @@ int tipc_mon_create(struct net *net, int bearer_id)
        self->is_up = true;
        self->is_head = true;
        INIT_LIST_HEAD(&self->list);
-       setup_timer(&mon->timer, mon_timeout, (unsigned long)mon);
+       timer_setup(&mon->timer, mon_timeout, 0);
        mon->timer_intv = msecs_to_jiffies(MON_TIMEOUT + (tn->random & 0xffff));
        mod_timer(&mon->timer, jiffies + mon->timer_intv);
        return 0;
index 89f8ac73bf65ce8beba31ff51eadaa6eb8a81ea8..009a81631280027c39272e67dc5fe1140257e3d6 100644 (file)
@@ -153,7 +153,7 @@ static void tipc_node_link_down(struct tipc_node *n, int bearer_id,
                                bool delete);
 static void node_lost_contact(struct tipc_node *n, struct sk_buff_head *inputq);
 static void tipc_node_delete(struct tipc_node *node);
-static void tipc_node_timeout(unsigned long data);
+static void tipc_node_timeout(struct timer_list *t);
 static void tipc_node_fsm_evt(struct tipc_node *n, int evt);
 static struct tipc_node *tipc_node_find(struct net *net, u32 addr);
 static void tipc_node_put(struct tipc_node *node);
@@ -361,7 +361,7 @@ struct tipc_node *tipc_node_create(struct net *net, u32 addr, u16 capabilities)
                goto exit;
        }
        tipc_node_get(n);
-       setup_timer(&n->timer, tipc_node_timeout, (unsigned long)n);
+       timer_setup(&n->timer, tipc_node_timeout, 0);
        n->keepalive_intv = U32_MAX;
        hlist_add_head_rcu(&n->hash, &tn->node_htable[tipc_hashfn(addr)]);
        list_for_each_entry_rcu(temp_node, &tn->node_list, list) {
@@ -500,9 +500,9 @@ void tipc_node_remove_conn(struct net *net, u32 dnode, u32 port)
 
 /* tipc_node_timeout - handle expiration of node timer
  */
-static void tipc_node_timeout(unsigned long data)
+static void tipc_node_timeout(struct timer_list *t)
 {
-       struct tipc_node *n = (struct tipc_node *)data;
+       struct tipc_node *n = from_timer(n, t, timer);
        struct tipc_link_entry *le;
        struct sk_buff_head xmitq;
        int bearer_id;
index ea61c32f6b807a63a274710848fab3e4ceb9f152..5d18c0caa92b213740e5c6e3152ec8ce37717dc2 100644 (file)
@@ -125,7 +125,7 @@ static void tipc_sock_destruct(struct sock *sk);
 static int tipc_release(struct socket *sock);
 static int tipc_accept(struct socket *sock, struct socket *new_sock, int flags,
                       bool kern);
-static void tipc_sk_timeout(unsigned long data);
+static void tipc_sk_timeout(struct timer_list *t);
 static int tipc_sk_publish(struct tipc_sock *tsk, uint scope,
                           struct tipc_name_seq const *seq);
 static int tipc_sk_withdraw(struct tipc_sock *tsk, uint scope,
@@ -464,7 +464,7 @@ static int tipc_sk_create(struct net *net, struct socket *sock,
                      NAMED_H_SIZE, 0);
 
        msg_set_origport(msg, tsk->portid);
-       setup_timer(&sk->sk_timer, tipc_sk_timeout, (unsigned long)tsk);
+       timer_setup(&sk->sk_timer, tipc_sk_timeout, 0);
        sk->sk_shutdown = 0;
        sk->sk_backlog_rcv = tipc_sk_backlog_rcv;
        sk->sk_rcvbuf = sysctl_tipc_rmem[1];
@@ -2530,14 +2530,14 @@ static int tipc_shutdown(struct socket *sock, int how)
        return res;
 }
 
-static void tipc_sk_timeout(unsigned long data)
+static void tipc_sk_timeout(struct timer_list *t)
 {
-       struct tipc_sock *tsk = (struct tipc_sock *)data;
+       struct sock *sk = from_timer(sk, t, sk_timer);
+       struct tipc_sock *tsk = tipc_sk(sk);
        u32 peer_port = tsk_peer_port(tsk);
        u32 peer_node = tsk_peer_node(tsk);
        u32 own_node = tsk_own_node(tsk);
        u32 own_port = tsk->portid;
-       struct sock *sk = &tsk->sk;
        struct net *net = sock_net(sk);
        struct sk_buff *skb = NULL;
 
index be3d9e3183dcb1ce929584a074755c1ce0969d0f..251065dfd8df8b81e5500af0e63e5a52cf8042b7 100644 (file)
@@ -133,9 +133,9 @@ void tipc_subscrp_report_overlap(struct tipc_subscription *sub, u32 found_lower,
                                node);
 }
 
-static void tipc_subscrp_timeout(unsigned long data)
+static void tipc_subscrp_timeout(struct timer_list *t)
 {
-       struct tipc_subscription *sub = (struct tipc_subscription *)data;
+       struct tipc_subscription *sub = from_timer(sub, t, timer);
        struct tipc_subscriber *subscriber = sub->subscriber;
 
        spin_lock_bh(&subscriber->lock);
@@ -303,7 +303,7 @@ static void tipc_subscrp_subscribe(struct net *net, struct tipc_subscr *s,
        tipc_subscrb_get(subscriber);
        spin_unlock_bh(&subscriber->lock);
 
-       setup_timer(&sub->timer, tipc_subscrp_timeout, (unsigned long)sub);
+       timer_setup(&sub->timer, tipc_subscrp_timeout, 0);
        timeout = htohl(sub->evt.s.timeout, swap);
 
        if (timeout != TIPC_WAIT_FOREVER)