Date: Tue, 15 Mar 2016 01:16:38 +0100 From: Mateusz Guzik <mjguzik@gmail.com> To: Gleb Smirnoff <glebius@FreeBSD.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r296880 - in head: share/man/man9 sys/kern sys/sys Message-ID: <20160315001638.GA29505@dft-labs.eu> In-Reply-To: <201603150005.u2F050ps086390@repo.freebsd.org> References: <201603150005.u2F050ps086390@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Mar 15, 2016 at 12:05:00AM +0000, Gleb Smirnoff wrote:
> +int
> +sysctl_handle_counter_u64_array(SYSCTL_HANDLER_ARGS)
> +{
> + uint64_t *out;
> + int error;
> +
> + out = malloc(arg2 * sizeof(uint64_t), M_TEMP, M_WAITOK);
> + for (int i = 0; i < arg2; i++)
> + out[i] = counter_u64_fetch(((counter_u64_t *)arg1)[i]);
> +
> + error = SYSCTL_OUT(req, out, arg2 * sizeof(uint64_t));
> +
> + if (error || !req->newptr)
> + return (error);
> +
> + /*
> + * Any write attempt to a counter zeroes it.
> + */
> + for (int i = 0; i < arg2; i++)
> + counter_u64_zero(((counter_u64_t *)arg1)[i]);
> +
> + return (0);
> +}
>
This never frees tha allocated buffer.
It would be better to just put stuff to userspace in a loop and avoid
allocations entirely. but does not look like there are no friendly
macros for that.
--
Mateusz Guzik <mjguzik gmail.com>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20160315001638.GA29505>
