On 08/03/17 16:37, Conrad Meyer wrote:
Hey Hans,
Is it not important that the subtraction and result are evaluated
without truncation?
Hi,
ticks is a circular counter. Assuming time = 0 and jiffies = -1U, then
"delay" becomes a very large negative value, because long is used, and
the delay <= 0 check, is no longer working like expected.
Casting to "int" or truncating is the right thing to do in this case.
--HPS
Thanks,
Conrad
On Thu, Aug 3, 2017 at 2:18 AM, Hans Petter Selasky
<hsela...@freebsd.org> wrote:
Author: hselasky
Date: Thu Aug 3 09:18:25 2017
New Revision: 321985
URL: https://svnweb.freebsd.org/changeset/base/321985
Log:
Ticks are 32-bit in FreeBSD.
MFC after: 3 days
Sponsored by: Mellanox Technologies
Modified:
head/sys/ofed/drivers/infiniband/core/addr.c
Modified: head/sys/ofed/drivers/infiniband/core/addr.c
==============================================================================
--- head/sys/ofed/drivers/infiniband/core/addr.c Thu Aug 3 09:14:43
2017 (r321984)
+++ head/sys/ofed/drivers/infiniband/core/addr.c Thu Aug 3 09:18:25
2017 (r321985)
@@ -187,10 +187,10 @@ EXPORT_SYMBOL(rdma_translate_ip);
static void set_timeout(unsigned long time)
{
- unsigned long delay;
+ int delay; /* under FreeBSD ticks are 32-bit */
delay = time - jiffies;
- if ((long)delay <= 0)
+ if (delay <= 0)
delay = 1;
mod_delayed_work(addr_wq, &work, delay);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"