Re: [PATCH v3 0/7] char/random: Simplify random address requests

From: Kees Cook
Date: Wed Aug 03 2016 - 22:41:27 EST


On Wed, Aug 3, 2016 at 4:39 PM, Jason Cooper <jason@xxxxxxxxxxxxxx> wrote:
> Two previous attempts have been made to rework this API. The first can be
> found at:
>
> https://lkml.kernel.org/r/cover.1390770607.git.ydroneaud@xxxxxxxxxx
>
> The second at:
>
> https://lkml.kernel.org/r/1469471141-25669-1-git-send-email-william.c.roberts@xxxxxxxxx
>
> Previous versions of this series can been seen at:
>
> RFC: https://lkml.kernel.org/r/20160726030201.6775-1-jason@xxxxxxxxxxxxxx
> v1: https://lkml.kernel.org/r/20160728204730.27453-1-jason@xxxxxxxxxxxxxx
> v2: https://lkml.kernel.org/r/20160730154244.403-1-jason@xxxxxxxxxxxxxx
>
> In addition to incorporating ideas from these two previous efforts, this series
> adds several desirable features. First, we take the range as an argument
> directly, which removes math both before the call and inside the function.
> Second, we return the start address on error. All callers fell back to the
> start address on error, so we remove the need to check for errors. Third, we
> cap range to prevent overflow. Last, we use kerneldoc to describe the new
> function.
>
> If possible, I'd like to request Acks from the various subsystems so that we
> can merge this as one bisectable branch.
>
> Changes from v2:
> - s/randomize_addr/randomize_page/ (Kees Cook)
> - PAGE_ALIGN(start) if it wasn't (Kees Cook, Michael Ellerman)
>
> Changes from v1:
> - Explicitly mention page_aligned start assumption (Yann Droneaud)
> - pick random pages vice random addresses (Yann Droneaud)
> - catch range=0 last
> - Add Ack for arm64 (Will Deacon)
>
> Jason Cooper (7):
> random: Simplify API for random address requests
> x86: Use simpler API for random address requests
> ARM: Use simpler API for random address requests
> arm64: Use simpler API for random address requests
> tile: Use simpler API for random address requests
> unicore32: Use simpler API for random address requests
> random: Remove unused randomize_range()
>
> arch/arm/kernel/process.c | 3 +--
> arch/arm64/kernel/process.c | 8 ++------
> arch/tile/mm/mmap.c | 3 +--
> arch/unicore32/kernel/process.c | 3 +--
> arch/x86/kernel/process.c | 3 +--
> arch/x86/kernel/sys_x86_64.c | 5 +----
> drivers/char/random.c | 36 +++++++++++++++++++++++++-----------
> include/linux/random.h | 2 +-
> 8 files changed, 33 insertions(+), 30 deletions(-)

This looks great! Thanks for the v3. :)

Acked-by: Kees Cook <keescook@xxxxxxxxxxxx>

-Kees

--
Kees Cook
Brillo & Chrome OS Security