Skip to content

Commit

Permalink
net/core: Convert sk_timer users to use timer_setup()
Browse files Browse the repository at this point in the history
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 for all users of sk_timer.

Cc: "David S. Miller" <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: Andrew Hendry <[email protected]>
Cc: Eric Dumazet <[email protected]>
Cc: Paolo Abeni <[email protected]>
Cc: David Howells <[email protected]>
Cc: Julia Lawall <[email protected]>
Cc: linzhang <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Kees Cook <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
kees authored and davem330 committed Oct 18, 2017
1 parent 26566ea commit 99767f2
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 42 deletions.
2 changes: 1 addition & 1 deletion net/core/sock.c
Original file line number Diff line number Diff line change
Expand Up @@ -2683,7 +2683,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
sk_init_common(sk);
sk->sk_send_head = NULL;

setup_timer(&sk->sk_timer, NULL, (unsigned long)sk);
timer_setup(&sk->sk_timer, NULL, 0);

sk->sk_allocation = GFP_KERNEL;
sk->sk_rcvbuf = sysctl_rmem_default;
Expand Down
6 changes: 3 additions & 3 deletions net/netrom/af_netrom.c
Original file line number Diff line number Diff line change
Expand Up @@ -241,9 +241,9 @@ void nr_destroy_socket(struct sock *);
/*
* Handler for deferred kills.
*/
static void nr_destroy_timer(unsigned long data)
static void nr_destroy_timer(struct timer_list *t)
{
struct sock *sk=(struct sock *)data;
struct sock *sk = from_timer(sk, t, sk_timer);
bh_lock_sock(sk);
sock_hold(sk);
nr_destroy_socket(sk);
Expand Down Expand Up @@ -284,7 +284,7 @@ void nr_destroy_socket(struct sock *sk)

if (sk_has_allocations(sk)) {
/* Defer: outstanding buffers */
sk->sk_timer.function = nr_destroy_timer;
sk->sk_timer.function = (TIMER_FUNC_TYPE)nr_destroy_timer;
sk->sk_timer.expires = jiffies + 2 * HZ;
add_timer(&sk->sk_timer);
} else
Expand Down
47 changes: 24 additions & 23 deletions net/netrom/nr_timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,23 +29,23 @@
#include <linux/interrupt.h>
#include <net/netrom.h>

static void nr_heartbeat_expiry(unsigned long);
static void nr_t1timer_expiry(unsigned long);
static void nr_t2timer_expiry(unsigned long);
static void nr_t4timer_expiry(unsigned long);
static void nr_idletimer_expiry(unsigned long);
static void nr_heartbeat_expiry(struct timer_list *);
static void nr_t1timer_expiry(struct timer_list *);
static void nr_t2timer_expiry(struct timer_list *);
static void nr_t4timer_expiry(struct timer_list *);
static void nr_idletimer_expiry(struct timer_list *);

void nr_init_timers(struct sock *sk)
{
struct nr_sock *nr = nr_sk(sk);

setup_timer(&nr->t1timer, nr_t1timer_expiry, (unsigned long)sk);
setup_timer(&nr->t2timer, nr_t2timer_expiry, (unsigned long)sk);
setup_timer(&nr->t4timer, nr_t4timer_expiry, (unsigned long)sk);
setup_timer(&nr->idletimer, nr_idletimer_expiry, (unsigned long)sk);
timer_setup(&nr->t1timer, nr_t1timer_expiry, 0);
timer_setup(&nr->t2timer, nr_t2timer_expiry, 0);
timer_setup(&nr->t4timer, nr_t4timer_expiry, 0);
timer_setup(&nr->idletimer, nr_idletimer_expiry, 0);

/* initialized by sock_init_data */
sk->sk_timer.function = &nr_heartbeat_expiry;
sk->sk_timer.function = (TIMER_FUNC_TYPE)nr_heartbeat_expiry;
}

void nr_start_t1timer(struct sock *sk)
Expand Down Expand Up @@ -112,9 +112,9 @@ int nr_t1timer_running(struct sock *sk)
return timer_pending(&nr_sk(sk)->t1timer);
}

static void nr_heartbeat_expiry(unsigned long param)
static void nr_heartbeat_expiry(struct timer_list *t)
{
struct sock *sk = (struct sock *)param;
struct sock *sk = from_timer(sk, t, sk_timer);
struct nr_sock *nr = nr_sk(sk);

bh_lock_sock(sk);
Expand Down Expand Up @@ -151,10 +151,10 @@ static void nr_heartbeat_expiry(unsigned long param)
bh_unlock_sock(sk);
}

static void nr_t2timer_expiry(unsigned long param)
static void nr_t2timer_expiry(struct timer_list *t)
{
struct sock *sk = (struct sock *)param;
struct nr_sock *nr = nr_sk(sk);
struct nr_sock *nr = from_timer(nr, t, t2timer);
struct sock *sk = &nr->sock;

bh_lock_sock(sk);
if (nr->condition & NR_COND_ACK_PENDING) {
Expand All @@ -164,19 +164,20 @@ static void nr_t2timer_expiry(unsigned long param)
bh_unlock_sock(sk);
}

static void nr_t4timer_expiry(unsigned long param)
static void nr_t4timer_expiry(struct timer_list *t)
{
struct sock *sk = (struct sock *)param;
struct nr_sock *nr = from_timer(nr, t, t4timer);
struct sock *sk = &nr->sock;

bh_lock_sock(sk);
nr_sk(sk)->condition &= ~NR_COND_PEER_RX_BUSY;
bh_unlock_sock(sk);
}

static void nr_idletimer_expiry(unsigned long param)
static void nr_idletimer_expiry(struct timer_list *t)
{
struct sock *sk = (struct sock *)param;
struct nr_sock *nr = nr_sk(sk);
struct nr_sock *nr = from_timer(nr, t, idletimer);
struct sock *sk = &nr->sock;

bh_lock_sock(sk);

Expand All @@ -201,10 +202,10 @@ static void nr_idletimer_expiry(unsigned long param)
bh_unlock_sock(sk);
}

static void nr_t1timer_expiry(unsigned long param)
static void nr_t1timer_expiry(struct timer_list *t)
{
struct sock *sk = (struct sock *)param;
struct nr_sock *nr = nr_sk(sk);
struct nr_sock *nr = from_timer(nr, t, t1timer);
struct sock *sk = &nr->sock;

bh_lock_sock(sk);
switch (nr->state) {
Expand Down
8 changes: 4 additions & 4 deletions net/rose/rose_timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@
#include <linux/interrupt.h>
#include <net/rose.h>

static void rose_heartbeat_expiry(unsigned long);
static void rose_heartbeat_expiry(struct timer_list *t);
static void rose_timer_expiry(struct timer_list *);
static void rose_idletimer_expiry(struct timer_list *);

void rose_start_heartbeat(struct sock *sk)
{
del_timer(&sk->sk_timer);

sk->sk_timer.function = &rose_heartbeat_expiry;
sk->sk_timer.function = (TIMER_FUNC_TYPE)rose_heartbeat_expiry;
sk->sk_timer.expires = jiffies + 5 * HZ;

add_timer(&sk->sk_timer);
Expand Down Expand Up @@ -119,9 +119,9 @@ void rose_stop_idletimer(struct sock *sk)
del_timer(&rose_sk(sk)->idletimer);
}

static void rose_heartbeat_expiry(unsigned long param)
static void rose_heartbeat_expiry(struct timer_list *t)
{
struct sock *sk = (struct sock *)param;
struct sock *sk = from_timer(sk, t, sk_timer);
struct rose_sock *rose = rose_sk(sk);

bh_lock_sock(sk);
Expand Down
8 changes: 5 additions & 3 deletions net/x25/af_x25.c
Original file line number Diff line number Diff line change
Expand Up @@ -374,9 +374,11 @@ static void __x25_destroy_socket(struct sock *);
/*
* handler for deferred kills.
*/
static void x25_destroy_timer(unsigned long data)
static void x25_destroy_timer(struct timer_list *t)
{
x25_destroy_socket_from_timer((struct sock *)data);
struct sock *sk = from_timer(sk, t, sk_timer);

x25_destroy_socket_from_timer(sk);
}

/*
Expand Down Expand Up @@ -413,7 +415,7 @@ static void __x25_destroy_socket(struct sock *sk)
if (sk_has_allocations(sk)) {
/* Defer: outstanding buffers */
sk->sk_timer.expires = jiffies + 10 * HZ;
sk->sk_timer.function = x25_destroy_timer;
sk->sk_timer.function = (TIMER_FUNC_TYPE)x25_destroy_timer;
add_timer(&sk->sk_timer);
} else {
/* drop last reference so sock_put will free */
Expand Down
17 changes: 9 additions & 8 deletions net/x25/x25_timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,17 @@
#include <net/tcp_states.h>
#include <net/x25.h>

static void x25_heartbeat_expiry(unsigned long);
static void x25_timer_expiry(unsigned long);
static void x25_heartbeat_expiry(struct timer_list *t);
static void x25_timer_expiry(struct timer_list *t);

void x25_init_timers(struct sock *sk)
{
struct x25_sock *x25 = x25_sk(sk);

setup_timer(&x25->timer, x25_timer_expiry, (unsigned long)sk);
timer_setup(&x25->timer, x25_timer_expiry, 0);

/* initialized by sock_init_data */
sk->sk_timer.function = &x25_heartbeat_expiry;
sk->sk_timer.function = (TIMER_FUNC_TYPE)x25_heartbeat_expiry;
}

void x25_start_heartbeat(struct sock *sk)
Expand Down Expand Up @@ -92,9 +92,9 @@ unsigned long x25_display_timer(struct sock *sk)
return x25->timer.expires - jiffies;
}

static void x25_heartbeat_expiry(unsigned long param)
static void x25_heartbeat_expiry(struct timer_list *t)
{
struct sock *sk = (struct sock *)param;
struct sock *sk = from_timer(sk, t, sk_timer);

bh_lock_sock(sk);
if (sock_owned_by_user(sk)) /* can currently only occur in state 3 */
Expand Down Expand Up @@ -159,9 +159,10 @@ static inline void x25_do_timer_expiry(struct sock * sk)
}
}

static void x25_timer_expiry(unsigned long param)
static void x25_timer_expiry(struct timer_list *t)
{
struct sock *sk = (struct sock *)param;
struct x25_sock *x25 = from_timer(x25, t, timer);
struct sock *sk = &x25->sk;

bh_lock_sock(sk);
if (sock_owned_by_user(sk)) { /* can currently only occur in state 3 */
Expand Down

0 comments on commit 99767f2

Please sign in to comment.