RE: [PATCH] clone3: validate stack arguments

From: David Laight
Date: Thu Oct 31 2019 - 10:27:42 EST


>From Christian Brauner
> Sent: 31 October 2019 11:36
>
> Validate the stack arguments and setup the stack depening on whether or not
> it is growing down or up.
>
...
> -static bool clone3_args_valid(const struct kernel_clone_args *kargs)
> +/**
> + * clone3_stack_valid - check and prepare stack
> + * @kargs: kernel clone args
> + *
> + * Verify that the stack arguments userspace gave us are sane.
> + * In addition, set the stack direction for userspace since it's easy for us to
> + * determine.
> + */
> +static inline bool clone3_stack_valid(struct kernel_clone_args *kargs)
> +{
> + if (kargs->stack == 0) {
> + if (kargs->stack_size > 0)
> + return false;
> + } else {
> + if (kargs->stack_size == 0)
> + return false;
> +
> + if (!access_ok((void __user *)kargs->stack, kargs->stack_size))
> + return false;

Does access_ok() do anything useful here?
It only verifies that the buffer isn't in kernel space.

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)