Skip to content

Commit b3fe565

Browse files
committed
Merge tag 'timers-conversion-next5' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux into timers/core
Pull the 5th batch of timer conversions from Kees Cook - qla2xxx patches have passed testing - ipvs patches have been Acked - prepare for more tree-wide DEFINE_TIMER() changes
2 parents 1c10bbe + 3653bc9 commit b3fe565

File tree

11 files changed

+39
-41
lines changed

11 files changed

+39
-41
lines changed

drivers/scsi/qla2xxx/qla_gbl.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,8 @@ int qla24xx_async_abort_cmd(srb_t *);
206206
*/
207207
extern struct scsi_host_template qla2xxx_driver_template;
208208
extern struct scsi_transport_template *qla2xxx_transport_vport_template;
209-
extern void qla2x00_timer(scsi_qla_host_t *);
210-
extern void qla2x00_start_timer(scsi_qla_host_t *, void *, unsigned long);
209+
extern void qla2x00_timer(struct timer_list *);
210+
extern void qla2x00_start_timer(scsi_qla_host_t *, unsigned long);
211211
extern void qla24xx_deallocate_vp_id(scsi_qla_host_t *);
212212
extern int qla24xx_disable_vp (scsi_qla_host_t *);
213213
extern int qla24xx_enable_vp (scsi_qla_host_t *);
@@ -753,7 +753,7 @@ extern int qla82xx_restart_isp(scsi_qla_host_t *);
753753
/* IOCB related functions */
754754
extern int qla82xx_start_scsi(srb_t *);
755755
extern void qla2x00_sp_free(void *);
756-
extern void qla2x00_sp_timeout(unsigned long);
756+
extern void qla2x00_sp_timeout(struct timer_list *);
757757
extern void qla2x00_bsg_job_done(void *, int);
758758
extern void qla2x00_bsg_sp_free(void *);
759759
extern void qla2x00_start_iocbs(struct scsi_qla_host *, struct req_que *);

drivers/scsi/qla2xxx/qla_init.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ static void qla24xx_handle_prli_done_event(struct scsi_qla_host *,
4545
/* SRB Extensions ---------------------------------------------------------- */
4646

4747
void
48-
qla2x00_sp_timeout(unsigned long __data)
48+
qla2x00_sp_timeout(struct timer_list *t)
4949
{
50-
srb_t *sp = (srb_t *)__data;
50+
srb_t *sp = from_timer(sp, t, u.iocb_cmd.timer);
5151
struct srb_iocb *iocb;
5252
scsi_qla_host_t *vha = sp->vha;
5353
struct req_que *req;

drivers/scsi/qla2xxx/qla_inline.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,10 +269,8 @@ qla2x00_rel_sp(srb_t *sp)
269269
static inline void
270270
qla2x00_init_timer(srb_t *sp, unsigned long tmo)
271271
{
272-
init_timer(&sp->u.iocb_cmd.timer);
272+
timer_setup(&sp->u.iocb_cmd.timer, qla2x00_sp_timeout, 0);
273273
sp->u.iocb_cmd.timer.expires = jiffies + tmo * HZ;
274-
sp->u.iocb_cmd.timer.data = (unsigned long)sp;
275-
sp->u.iocb_cmd.timer.function = qla2x00_sp_timeout;
276274
add_timer(&sp->u.iocb_cmd.timer);
277275
sp->free = qla2x00_sp_free;
278276
if (IS_QLAFX00(sp->vha->hw) && (sp->type == SRB_FXIOCB_DCMD))

drivers/scsi/qla2xxx/qla_mid.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ qla24xx_create_vhost(struct fc_vport *fc_vport)
487487
atomic_set(&vha->loop_state, LOOP_DOWN);
488488
atomic_set(&vha->loop_down_timer, LOOP_DOWN_TIME);
489489

490-
qla2x00_start_timer(vha, qla2x00_timer, WATCH_INTERVAL);
490+
qla2x00_start_timer(vha, WATCH_INTERVAL);
491491

492492
vha->req = base_vha->req;
493493
host->can_queue = base_vha->req->length + 128;

drivers/scsi/qla2xxx/qla_os.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -330,12 +330,10 @@ struct scsi_transport_template *qla2xxx_transport_vport_template = NULL;
330330
*/
331331

332332
__inline__ void
333-
qla2x00_start_timer(scsi_qla_host_t *vha, void *func, unsigned long interval)
333+
qla2x00_start_timer(scsi_qla_host_t *vha, unsigned long interval)
334334
{
335-
init_timer(&vha->timer);
335+
timer_setup(&vha->timer, qla2x00_timer, 0);
336336
vha->timer.expires = jiffies + interval * HZ;
337-
vha->timer.data = (unsigned long)vha;
338-
vha->timer.function = (void (*)(unsigned long))func;
339337
add_timer(&vha->timer);
340338
vha->timer_active = 1;
341339
}
@@ -3245,7 +3243,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
32453243
base_vha->host->irq = ha->pdev->irq;
32463244

32473245
/* Initialized the timer */
3248-
qla2x00_start_timer(base_vha, qla2x00_timer, WATCH_INTERVAL);
3246+
qla2x00_start_timer(base_vha, WATCH_INTERVAL);
32493247
ql_dbg(ql_dbg_init, base_vha, 0x00ef,
32503248
"Started qla2x00_timer with "
32513249
"interval=%d.\n", WATCH_INTERVAL);
@@ -5994,8 +5992,9 @@ qla2x00_rst_aen(scsi_qla_host_t *vha)
59945992
* Context: Interrupt
59955993
***************************************************************************/
59965994
void
5997-
qla2x00_timer(scsi_qla_host_t *vha)
5995+
qla2x00_timer(struct timer_list *t)
59985996
{
5997+
scsi_qla_host_t *vha = from_timer(vha, t, timer);
59995998
unsigned long cpu_flags = 0;
60005999
int start_dpc = 0;
60016000
int index;

include/linux/timer.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ struct timer_list {
6363

6464
#define TIMER_TRACE_FLAGMASK (TIMER_MIGRATING | TIMER_DEFERRABLE | TIMER_PINNED | TIMER_IRQSAFE)
6565

66+
#define TIMER_DATA_TYPE unsigned long
67+
#define TIMER_FUNC_TYPE void (*)(TIMER_DATA_TYPE)
68+
6669
#define __TIMER_INITIALIZER(_function, _data, _flags) { \
6770
.entry = { .next = TIMER_ENTRY_STATIC }, \
6871
.function = (_function), \
@@ -74,7 +77,7 @@ struct timer_list {
7477

7578
#define DEFINE_TIMER(_name, _function) \
7679
struct timer_list _name = \
77-
__TIMER_INITIALIZER(_function, 0, 0)
80+
__TIMER_INITIALIZER((TIMER_FUNC_TYPE)_function, 0, 0)
7881

7982
void init_timer_key(struct timer_list *timer, unsigned int flags,
8083
const char *name, struct lock_class_key *key);
@@ -147,9 +150,6 @@ static inline void init_timer_on_stack_key(struct timer_list *timer,
147150
#define setup_pinned_deferrable_timer_on_stack(timer, fn, data) \
148151
__setup_timer_on_stack((timer), (fn), (data), TIMER_DEFERRABLE | TIMER_PINNED)
149152

150-
#define TIMER_DATA_TYPE unsigned long
151-
#define TIMER_FUNC_TYPE void (*)(TIMER_DATA_TYPE)
152-
153153
#ifndef CONFIG_LOCKDEP
154154
static inline void timer_setup(struct timer_list *timer,
155155
void (*callback)(struct timer_list *),

net/netfilter/ipvs/ip_vs_conn.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ static inline void ct_write_unlock_bh(unsigned int key)
104104
spin_unlock_bh(&__ip_vs_conntbl_lock_array[key&CT_LOCKARRAY_MASK].l);
105105
}
106106

107-
static void ip_vs_conn_expire(unsigned long data);
107+
static void ip_vs_conn_expire(struct timer_list *t);
108108

109109
/*
110110
* Returns hash value for IPVS connection entry
@@ -457,7 +457,7 @@ EXPORT_SYMBOL_GPL(ip_vs_conn_out_get_proto);
457457
static void __ip_vs_conn_put_notimer(struct ip_vs_conn *cp)
458458
{
459459
__ip_vs_conn_put(cp);
460-
ip_vs_conn_expire((unsigned long)cp);
460+
ip_vs_conn_expire(&cp->timer);
461461
}
462462

463463
/*
@@ -817,9 +817,9 @@ static void ip_vs_conn_rcu_free(struct rcu_head *head)
817817
kmem_cache_free(ip_vs_conn_cachep, cp);
818818
}
819819

820-
static void ip_vs_conn_expire(unsigned long data)
820+
static void ip_vs_conn_expire(struct timer_list *t)
821821
{
822-
struct ip_vs_conn *cp = (struct ip_vs_conn *)data;
822+
struct ip_vs_conn *cp = from_timer(cp, t, timer);
823823
struct netns_ipvs *ipvs = cp->ipvs;
824824

825825
/*
@@ -909,7 +909,7 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p, int dest_af,
909909
}
910910

911911
INIT_HLIST_NODE(&cp->c_list);
912-
setup_timer(&cp->timer, ip_vs_conn_expire, (unsigned long)cp);
912+
timer_setup(&cp->timer, ip_vs_conn_expire, 0);
913913
cp->ipvs = ipvs;
914914
cp->af = p->af;
915915
cp->daf = dest_af;

net/netfilter/ipvs/ip_vs_ctl.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,9 +1146,9 @@ ip_vs_del_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
11461146
return 0;
11471147
}
11481148

1149-
static void ip_vs_dest_trash_expire(unsigned long data)
1149+
static void ip_vs_dest_trash_expire(struct timer_list *t)
11501150
{
1151-
struct netns_ipvs *ipvs = (struct netns_ipvs *)data;
1151+
struct netns_ipvs *ipvs = from_timer(ipvs, t, dest_trash_timer);
11521152
struct ip_vs_dest *dest, *next;
11531153
unsigned long now = jiffies;
11541154

@@ -4019,8 +4019,7 @@ int __net_init ip_vs_control_net_init(struct netns_ipvs *ipvs)
40194019

40204020
INIT_LIST_HEAD(&ipvs->dest_trash);
40214021
spin_lock_init(&ipvs->dest_trash_lock);
4022-
setup_timer(&ipvs->dest_trash_timer, ip_vs_dest_trash_expire,
4023-
(unsigned long) ipvs);
4022+
timer_setup(&ipvs->dest_trash_timer, ip_vs_dest_trash_expire, 0);
40244023
atomic_set(&ipvs->ftpsvc_counter, 0);
40254024
atomic_set(&ipvs->nullsvc_counter, 0);
40264025
atomic_set(&ipvs->conn_out_counter, 0);

net/netfilter/ipvs/ip_vs_est.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,12 @@ static void ip_vs_read_cpu_stats(struct ip_vs_kstats *sum,
9797
}
9898

9999

100-
static void estimation_timer(unsigned long arg)
100+
static void estimation_timer(struct timer_list *t)
101101
{
102102
struct ip_vs_estimator *e;
103103
struct ip_vs_stats *s;
104104
u64 rate;
105-
struct netns_ipvs *ipvs = (struct netns_ipvs *)arg;
105+
struct netns_ipvs *ipvs = from_timer(ipvs, t, est_timer);
106106

107107
spin_lock(&ipvs->est_lock);
108108
list_for_each_entry(e, &ipvs->est_list, list) {
@@ -192,7 +192,7 @@ int __net_init ip_vs_estimator_net_init(struct netns_ipvs *ipvs)
192192
{
193193
INIT_LIST_HEAD(&ipvs->est_list);
194194
spin_lock_init(&ipvs->est_lock);
195-
setup_timer(&ipvs->est_timer, estimation_timer, (unsigned long)ipvs);
195+
timer_setup(&ipvs->est_timer, estimation_timer, 0);
196196
mod_timer(&ipvs->est_timer, jiffies + 2 * HZ);
197197
return 0;
198198
}

net/netfilter/ipvs/ip_vs_lblc.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ struct ip_vs_lblc_table {
106106
struct rcu_head rcu_head;
107107
struct hlist_head bucket[IP_VS_LBLC_TAB_SIZE]; /* hash bucket */
108108
struct timer_list periodic_timer; /* collect stale entries */
109+
struct ip_vs_service *svc; /* pointer back to service */
109110
atomic_t entries; /* number of entries */
110111
int max_size; /* maximum size of entries */
111112
int rover; /* rover for expire check */
@@ -294,10 +295,10 @@ static inline void ip_vs_lblc_full_check(struct ip_vs_service *svc)
294295
* of the table.
295296
* The full expiration check is for this purpose now.
296297
*/
297-
static void ip_vs_lblc_check_expire(unsigned long data)
298+
static void ip_vs_lblc_check_expire(struct timer_list *t)
298299
{
299-
struct ip_vs_service *svc = (struct ip_vs_service *) data;
300-
struct ip_vs_lblc_table *tbl = svc->sched_data;
300+
struct ip_vs_lblc_table *tbl = from_timer(tbl, t, periodic_timer);
301+
struct ip_vs_service *svc = tbl->svc;
301302
unsigned long now = jiffies;
302303
int goal;
303304
int i, j;
@@ -369,12 +370,12 @@ static int ip_vs_lblc_init_svc(struct ip_vs_service *svc)
369370
tbl->rover = 0;
370371
tbl->counter = 1;
371372
tbl->dead = 0;
373+
tbl->svc = svc;
372374

373375
/*
374376
* Hook periodic timer for garbage collection
375377
*/
376-
setup_timer(&tbl->periodic_timer, ip_vs_lblc_check_expire,
377-
(unsigned long)svc);
378+
timer_setup(&tbl->periodic_timer, ip_vs_lblc_check_expire, 0);
378379
mod_timer(&tbl->periodic_timer, jiffies + CHECK_EXPIRE_INTERVAL);
379380

380381
return 0;

net/netfilter/ipvs/ip_vs_lblcr.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,7 @@ struct ip_vs_lblcr_table {
278278
atomic_t entries; /* number of entries */
279279
int max_size; /* maximum size of entries */
280280
struct timer_list periodic_timer; /* collect stale entries */
281+
struct ip_vs_service *svc; /* pointer back to service */
281282
int rover; /* rover for expire check */
282283
int counter; /* counter for no expire */
283284
bool dead;
@@ -458,10 +459,10 @@ static inline void ip_vs_lblcr_full_check(struct ip_vs_service *svc)
458459
* of the table.
459460
* The full expiration check is for this purpose now.
460461
*/
461-
static void ip_vs_lblcr_check_expire(unsigned long data)
462+
static void ip_vs_lblcr_check_expire(struct timer_list *t)
462463
{
463-
struct ip_vs_service *svc = (struct ip_vs_service *) data;
464-
struct ip_vs_lblcr_table *tbl = svc->sched_data;
464+
struct ip_vs_lblcr_table *tbl = from_timer(tbl, t, periodic_timer);
465+
struct ip_vs_service *svc = tbl->svc;
465466
unsigned long now = jiffies;
466467
int goal;
467468
int i, j;
@@ -532,12 +533,12 @@ static int ip_vs_lblcr_init_svc(struct ip_vs_service *svc)
532533
tbl->rover = 0;
533534
tbl->counter = 1;
534535
tbl->dead = 0;
536+
tbl->svc = svc;
535537

536538
/*
537539
* Hook periodic timer for garbage collection
538540
*/
539-
setup_timer(&tbl->periodic_timer, ip_vs_lblcr_check_expire,
540-
(unsigned long)svc);
541+
timer_setup(&tbl->periodic_timer, ip_vs_lblcr_check_expire, 0);
541542
mod_timer(&tbl->periodic_timer, jiffies + CHECK_EXPIRE_INTERVAL);
542543

543544
return 0;

0 commit comments

Comments
 (0)