svn commit: r331233 - head/sys/kern
Jeff Roberson
jroberson at jroberson.net
Tue Mar 20 05:58:53 UTC 2018
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);
>
More information about the svn-src-all
mailing list