Thanks for fixing my bug.  Sorry I didn't build universe for this one.

Thanks,
Jeff

On Tue, 20 Mar 2018, Justin Hibbits wrote:

Author: jhibbits
Date: Tue Mar 20 02:01:30 2018
New Revision: 331233
URL: https://svnweb.freebsd.org/changeset/base/331233

Log:
 Cast through uintptr_t to narrow the buf domain pointer on 32-bit archs

 arg2 is an intmax_t, which on 32-bit architectures is 64 bits, wider than a
 pointer.  When &bdomain[i] is added to arg2 it widens from uintptr_t to
 intmax_t, then gcc whines when it gets cast to a pointer.  Casting through
 uintptr_t silences this warning.

Modified:
 head/sys/kern/vfs_bio.c

Modified: head/sys/kern/vfs_bio.c
==============================================================================
--- head/sys/kern/vfs_bio.c     Tue Mar 20 01:33:04 2018        (r331232)
+++ head/sys/kern/vfs_bio.c     Tue Mar 20 02:01:30 2018        (r331233)
@@ -435,7 +435,7 @@ sysctl_bufdomain_int(SYSCTL_HANDLER_ARGS)
                return (error);
        *(int *)arg1 = value;
        for (i = 0; i < buf_domains; i++)
-               *(int *)(((uintptr_t)&bdomain[i]) + arg2) =
+               *(int *)(uintptr_t)(((uintptr_t)&bdomain[i]) + arg2) =
                    value / buf_domains;

        return (error);
@@ -454,7 +454,7 @@ sysctl_bufdomain_long(SYSCTL_HANDLER_ARGS)
                return (error);
        *(long *)arg1 = value;
        for (i = 0; i < buf_domains; i++)
-               *(long *)(((uintptr_t)&bdomain[i]) + arg2) =
+               *(long *)(uintptr_t)(((uintptr_t)&bdomain[i]) + arg2) =
                    value / buf_domains;

        return (error);

_______________________________________________
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"

Reply via email to