Date: Tue, 25 Nov 2014 13:12:46 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r275038 - in stable: 10/usr.sbin/rtadvd 8/usr.sbin/rtadvd 9/usr.sbin/rtadvd Message-ID: <201411251312.sAPDCk25056177@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Tue Nov 25 13:12:45 2014 New Revision: 275038 URL: https://svnweb.freebsd.org/changeset/base/275038 Log: MFC r274898: Fix the following -Werror warnings from clang 3.5.0, while building usr.sbin/rtadvd: usr.sbin/rtadvd/rtadvd.c:1291:7: error: taking the absolute value of unsigned type 'unsigned int' has no effect [-Werror,-Wabsolute-value] abs(preferred_time - pfx->pfx_pltimeexpire) > rai->rai_clockskew) { ^ usr.sbin/rtadvd/rtadvd.c:1291:7: note: remove the call to 'abs' since unsigned values cannot be negative abs(preferred_time - pfx->pfx_pltimeexpire) > rai->rai_clockskew) { ^~~ usr.sbin/rtadvd/rtadvd.c:1324:7: error: taking the absolute value of unsigned type 'unsigned int' has no effect [-Werror,-Wabsolute-value] abs(valid_time - pfx->pfx_vltimeexpire) > rai->rai_clockskew) { ^ usr.sbin/rtadvd/rtadvd.c:1324:7: note: remove the call to 'abs' since unsigned values cannot be negative abs(valid_time - pfx->pfx_vltimeexpire) > rai->rai_clockskew) { ^~~ 2 errors generated. These warnings occur because both preferred_time and pfx_pltimeexpire are uint32_t's, so the subtraction expression is also unsigned, and calling abs() is a no-op. However, the intention was to look at the absolute difference between the two unsigned quantities. Introduce a small static function to clarify what we're doing, and call that instead. Reviewed by: hrs Differential Revision: https://reviews.freebsd.org/D1197 Modified: stable/8/usr.sbin/rtadvd/rtadvd.c Directory Properties: stable/8/usr.sbin/rtadvd/ (props changed) Changes in other areas also in this revision: Modified: stable/10/usr.sbin/rtadvd/rtadvd.c stable/9/usr.sbin/rtadvd/rtadvd.c Directory Properties: stable/10/ (props changed) stable/9/usr.sbin/rtadvd/ (props changed) Modified: stable/8/usr.sbin/rtadvd/rtadvd.c ============================================================================== --- stable/8/usr.sbin/rtadvd/rtadvd.c Tue Nov 25 13:06:47 2014 (r275037) +++ stable/8/usr.sbin/rtadvd/rtadvd.c Tue Nov 25 13:12:45 2014 (r275038) @@ -1225,6 +1225,12 @@ ra_input(int len, struct nd_router_adver return; } +static uint32_t +udiff(uint32_t u, uint32_t v) +{ + return (u >= v ? u - v : v - u); +} + /* return a non-zero value if the received prefix is inconsitent with ours */ static int prefix_check(struct nd_opt_prefix_info *pinfo, @@ -1283,7 +1289,7 @@ prefix_check(struct nd_opt_prefix_info * preferred_time += now.tv_sec; if (!pfx->pfx_timer && rai->rai_clockskew && - abs(preferred_time - pfx->pfx_pltimeexpire) > rai->rai_clockskew) { + udiff(preferred_time, pfx->pfx_pltimeexpire) > rai->rai_clockskew) { syslog(LOG_INFO, "<%s> preferred lifetime for %s/%d" " (decr. in real time) inconsistent on %s:" @@ -1316,7 +1322,7 @@ prefix_check(struct nd_opt_prefix_info * valid_time += now.tv_sec; if (!pfx->pfx_timer && rai->rai_clockskew && - abs(valid_time - pfx->pfx_vltimeexpire) > rai->rai_clockskew) { + udiff(valid_time, pfx->pfx_vltimeexpire) > rai->rai_clockskew) { syslog(LOG_INFO, "<%s> valid lifetime for %s/%d" " (decr. in real time) inconsistent on %s:"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201411251312.sAPDCk25056177>