From: Jan Kasprzak <kas@informatics.muni.cz>
To: linux-kernel@vger.kernel.org
Subject: Patch: IPv6/AMD64: bug in net/ipv6/ndisc.c
Date: Thu, 29 Jan 2004 22:15:38 +0100 [thread overview]
Message-ID: <20040129221538.J24747@fi.muni.cz> (raw)
Hello, all!
while compiling the kernel (2.6.1) I have spotted the following warning:
net/ipv6/ndisc.c: In function `ndisc_router_discovery':
net/ipv6/ndisc.c:1113: warning: comparison is always true due to limited range of data type
net/ipv6/ndisc.c:1121: warning: comparison is always true due to limited range of data type
The corresponding lines are these:
__u32 rtime = ntohl(ra_msg->retrans_timer);
Here ---> if (rtime && rtime/1000 < (MAX_SCHEDULE_TIMEOUT/HZ)) {
rtime = (rtime*HZ)/1000;
if (rtime < HZ/10)
rtime = HZ/10;
in6_dev->nd_parms->retrans_time = rtime;
}
rtime = ntohl(ra_msg->reachable_time);
and here --> if (rtime && rtime/1000 < MAX_SCHEDULE_TIMEOUT/(3*HZ)) {
rtime = (rtime*HZ)/1000;
The MAX_SCHEDULE_TIMEOUT is #defined to LONG_MAX in include/linux/sched.h,
which is 2^63-1 or so on AMD64. I propose the following fix:
--- net/ipv6/ndisc.c.orig 2004-01-29 22:03:50.553745520 +0100
+++ net/ipv6/ndisc.c 2004-01-29 22:06:39.973989728 +0100
@@ -995,6 +995,9 @@
}
}
+#define MAX_SCHEDULE_TIMEOUT_32 (MAX_SCHEDULE_TIMEOUT/HZ > (1U<<31) ? \
+ (1U<<31) : MAX_SCHEDULE_TIMEOUT/HZ)
+
static void ndisc_router_discovery(struct sk_buff *skb)
{
struct ra_msg *ra_msg = (struct ra_msg *) skb->h.raw;
@@ -1110,7 +1113,7 @@
if (in6_dev->nd_parms) {
__u32 rtime = ntohl(ra_msg->retrans_timer);
- if (rtime && rtime/1000 < MAX_SCHEDULE_TIMEOUT/HZ) {
+ if (rtime && rtime/1000 < MAX_SCHEDULE_TIMEOUT_32) {
rtime = (rtime*HZ)/1000;
if (rtime < HZ/10)
rtime = HZ/10;
@@ -1118,7 +1121,7 @@
}
rtime = ntohl(ra_msg->reachable_time);
- if (rtime && rtime/1000 < MAX_SCHEDULE_TIMEOUT/(3*HZ)) {
+ if (rtime && rtime/1000 < MAX_SCHEDULE_TIMEOUT_32/3) {
rtime = (rtime*HZ)/1000;
if (rtime < HZ/10)
Do you think this is a correct fix? If so, please apply. Hope
this helps,
-Yenya
--
| Jan "Yenya" Kasprzak <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839 Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/ Czech Linux Homepage: http://www.linux.cz/ |
Any compiler or language that likes to hide things like memory allocations
behind your back just isn't a good choice for a kernel. --Linus Torvalds
next reply other threads:[~2004-01-29 21:15 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-01-29 21:15 Jan Kasprzak [this message]
2004-01-29 23:37 ` YOSHIFUJI Hideaki / 吉藤英明
2004-01-29 23:39 ` David S. Miller
2004-01-30 0:40 ` Andi Kleen
2004-01-30 0:56 ` David S. Miller
2004-01-30 1:07 ` Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040129221538.J24747@fi.muni.cz \
--to=kas@informatics.muni.cz \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®