login
Header Space

 
 

[PATCH 33/38] net/ipv4: Use time_before, time_before_eq, etc.

Previous thread: [PATCH 32/38] net/econet: Use time_before, time_before_eq, etc. by Julia Lawall on Monday, December 24, 2007 - 10:48 am. (1 message)

Next thread: [PATCH 34/38] net/ipv6: Use time_before, time_before_eq, etc. by Julia Lawall on Monday, December 24, 2007 - 10:49 am. (1 message)
To: <davem@...>, <linux-kernel@...>, <kernel-janitors@...>
Date: Monday, December 24, 2007 - 10:48 am

From: Julia Lawall &lt;julia@diku.dk&gt;

The functions time_before, time_before_eq, time_after, and time_after_eq
are more robust for comparing jiffies against other values.

A simplified version of the semantic patch making this change is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// &lt;smpl&gt;
@ change_compare_np @
expression E;
@@

(
- jiffies &lt;= E
+ time_before_eq(jiffies,E)
|
- jiffies &gt;= E
+ time_after_eq(jiffies,E)
|
- jiffies &lt; E
+ time_before(jiffies,E)
|
- jiffies &gt; E
+ time_after(jiffies,E)
)

@ include depends on change_compare_np @
@@

#include &lt;linux/jiffies.h&gt;

@ no_include depends on !include &amp;&amp; change_compare_np @
@@

  #include &lt;linux/...&gt;
+ #include &lt;linux/jiffies.h&gt;
// &lt;/smpl&gt;

Signed-off-by: Julia Lawall &lt;julia@diku.dk&gt;
---

diff -r -u -p a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
--- a/net/ipv4/ip_gre.c	2007-11-01 10:30:44.000000000 +0100
+++ b/net/ipv4/ip_gre.c	2007-12-23 20:44:52.000000000 +0100
@@ -28,6 +28,7 @@
 #include &lt;linux/igmp.h&gt;
 #include &lt;linux/netfilter_ipv4.h&gt;
 #include &lt;linux/if_ether.h&gt;
+#include &lt;linux/jiffies.h&gt;
 
 #include &lt;net/sock.h&gt;
 #include &lt;net/ip.h&gt;
@@ -373,7 +374,7 @@ static void ipgre_err(struct sk_buff *sk
 	if (t-&gt;parms.iph.ttl == 0 &amp;&amp; type == ICMP_TIME_EXCEEDED)
 		goto out;
 
-	if (jiffies - t-&gt;err_time &lt; IPTUNNEL_ERR_TIMEO)
+	if (time_before(jiffies, t-&gt;err_time + IPTUNNEL_ERR_TIMEO))
 		t-&gt;err_count++;
 	else
 		t-&gt;err_count = 1;
@@ -799,7 +800,8 @@ static int ipgre_tunnel_xmit(struct sk_b
 #endif
 
 	if (tunnel-&gt;err_count &gt; 0) {
-		if (jiffies - tunnel-&gt;err_time &lt; IPTUNNEL_ERR_TIMEO) {
+		if (time_before(jiffies,
+				tunnel-&gt;err_time + IPTUNNEL_ERR_TIMEO)) {
 			tunnel-&gt;err_count--;
 
 			dst_link_failure(skb);
diff -r -u -p a/net/ipv4/ipip.c b/net/ipv4/ipip.c
--- a/net/ipv4/ipip.c	2007-11-01 10:30:44.000000000 +0100
+++ b/net/ipv4/ipip.c	2007-12-...
Previous thread: [PATCH 32/38] net/econet: Use time_before, time_before_eq, etc. by Julia Lawall on Monday, December 24, 2007 - 10:48 am. (1 message)

Next thread: [PATCH 34/38] net/ipv6: Use time_before, time_before_eq, etc. by Julia Lawall on Monday, December 24, 2007 - 10:49 am. (1 message)
speck-geostationary