On Tue, Mar 15, 2016 at 01:16:38AM +0100, Mateusz Guzik wrote: M> On Tue, Mar 15, 2016 at 12:05:00AM +0000, Gleb Smirnoff wrote: M> > +int M> > +sysctl_handle_counter_u64_array(SYSCTL_HANDLER_ARGS) M> > +{ M> > + uint64_t *out; M> > + int error; M> > + M> > + out = malloc(arg2 * sizeof(uint64_t), M_TEMP, M_WAITOK); M> > + for (int i = 0; i < arg2; i++) M> > + out[i] = counter_u64_fetch(((counter_u64_t *)arg1)[i]); M> > + M> > + error = SYSCTL_OUT(req, out, arg2 * sizeof(uint64_t)); M> > + M> > + if (error || !req->newptr) M> > + return (error); M> > + M> > + /* M> > + * Any write attempt to a counter zeroes it. M> > + */ M> > + for (int i = 0; i < arg2; i++) M> > + counter_u64_zero(((counter_u64_t *)arg1)[i]); M> > + M> > + return (0); M> > +} M> > M> M> This never frees tha allocated buffer. M> M> It would be better to just put stuff to userspace in a loop and avoid M> allocations entirely. but does not look like there are no friendly M> macros for that.
Thanks, Mateusz! Pointy hat is mine. -- Totus tuus, Glebius. _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"