On Thu, Jul 17, 2014 at 05:38:20PM -0400, Theodore Ts'o wrote: > The getrandom(2) system call was requested by the LibreSSL Portable > developers. It is analoguous to the getentropy(2) system call in > OpenBSD. > +SYSCALL_DEFINE3(getrandom, char __user *, buf, size_t, count, > + unsigned int, flags) > +{ > + int r; > + > + if (flags & ~(GRND_NONBLOCK|GRND_RANDOM)) > + return -EINVAL; > + > + if (count > INT_MAX) > + count = INT_MAX; > + > + if (flags & GRND_RANDOM) > + return _random_read(flags & GRND_NONBLOCK, buf, count); > + if (flags & GRND_NONBLOCK) { > + if (!completion_done(&urandom_initialized)) > + return -EAGAIN; > + } else { > + r = wait_for_completion_interruptible(&urandom_initialized); > + if (r) > + return r; > + } > + return urandom_read(NULL, buf, count, NULL); > +} I like how tiny this ends up being. Feel free to add my rb:. Reviewed-by: Zach Brown <zab@xxxxxxxxx> - z -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html