* [PATCH 2.6.0-test4][IPv6] ip6_flowlabel.c: timer cleanups
@ 2003-08-26 14:24 Vinay K Nallamothu
2003-08-28 6:25 ` David S. Miller
0 siblings, 1 reply; 2+ messages in thread
From: Vinay K Nallamothu @ 2003-08-26 14:24 UTC (permalink / raw)
To: netdev; +Cc: LKML
Hi,
Compiles fine though untested. A similar patch should be applicable to
2.4 also.
net/ipv6/ip6_flowlabel.c:
This patch does the following modifications to timer management:
1. use static timer initializer
2. replace del_timer/add_timer with mod_timer
--- linux-2.6.0-test4/net/ipv6/ip6_flowlabel.c 2003-07-15 17:23:45.000000000 +0530
+++ linux-2.6.0-test4-nvk/net/ipv6/ip6_flowlabel.c 2003-08-26 19:49:34.000000000 +0530
@@ -49,7 +49,8 @@
static atomic_t fl_size = ATOMIC_INIT(0);
static struct ip6_flowlabel *fl_ht[FL_HASH_MASK+1];
-static struct timer_list ip6_fl_gc_timer;
+static void ip6_fl_gc(unsigned long dummy);
+static struct timer_list ip6_fl_gc_timer = TIMER_INITIALIZER(ip6_fl_gc, 0, 0);
/* FL hash table lock: it protects only of GC */
@@ -104,10 +105,9 @@
fl->opt = NULL;
kfree(opt);
}
- if (!del_timer(&ip6_fl_gc_timer) ||
- (long)(ip6_fl_gc_timer.expires - ttd) > 0)
- ip6_fl_gc_timer.expires = ttd;
- add_timer(&ip6_fl_gc_timer);
+ if (!timer_pending(&ip6_fl_gc_timer) ||
+ time_after(ip6_fl_gc_timer.expires, ttd))
+ mod_timer(&ip6_fl_gc_timer, ttd);
}
}
@@ -692,10 +692,6 @@
{
#ifdef CONFIG_PROC_FS
struct proc_dir_entry *p;
-#endif
- init_timer(&ip6_fl_gc_timer);
- ip6_fl_gc_timer.function = ip6_fl_gc;
-#ifdef CONFIG_PROC_FS
p = create_proc_entry("ip6_flowlabel", S_IRUGO, proc_net);
if (p)
p->proc_fops = &ip6fl_seq_fops;
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH 2.6.0-test4][IPv6] ip6_flowlabel.c: timer cleanups
2003-08-26 14:24 [PATCH 2.6.0-test4][IPv6] ip6_flowlabel.c: timer cleanups Vinay K Nallamothu
@ 2003-08-28 6:25 ` David S. Miller
0 siblings, 0 replies; 2+ messages in thread
From: David S. Miller @ 2003-08-28 6:25 UTC (permalink / raw)
To: Vinay K Nallamothu; +Cc: netdev, linux-kernel
On 26 Aug 2003 19:54:41 +0530
Vinay K Nallamothu <vinay-rc@naturesoft.net> wrote:
> @@ -104,10 +105,9 @@
> fl->opt = NULL;
> kfree(opt);
> }
> - if (!del_timer(&ip6_fl_gc_timer) ||
> - (long)(ip6_fl_gc_timer.expires - ttd) > 0)
> - ip6_fl_gc_timer.expires = ttd;
> - add_timer(&ip6_fl_gc_timer);
> + if (!timer_pending(&ip6_fl_gc_timer) ||
> + time_after(ip6_fl_gc_timer.expires, ttd))
> + mod_timer(&ip6_fl_gc_timer, ttd);
> }
> }
>
This code is still racey. This code needs to hold the
toplevel ip6_fl_lock during the GC timer manipulations
and tests.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-08-28 6:25 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-08-26 14:24 [PATCH 2.6.0-test4][IPv6] ip6_flowlabel.c: timer cleanups Vinay K Nallamothu
2003-08-28 6:25 ` David S. Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).