netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).