Date: Fri, 4 Aug 2017 08:28:41 +0200 From: Hans Petter Selasky <hps@selasky.org> To: cem@freebsd.org Cc: src-committers <src-committers@freebsd.org>, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r321985 - head/sys/ofed/drivers/infiniband/core Message-ID: <bd19c6f8-fa97-c9c5-6318-1778e38dd0a9@selasky.org> In-Reply-To: <CAG6CVpVL49nVqRs5atub=d2P39EGOqcNtx_Raa8fWtV=BFZXbw@mail.gmail.com> References: <201708030918.v739IPVY034866@repo.freebsd.org> <CAG6CVpVL49nVqRs5atub=d2P39EGOqcNtx_Raa8fWtV=BFZXbw@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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 > <hselasky@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); >> > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bd19c6f8-fa97-c9c5-6318-1778e38dd0a9>