On 09/28/2018 01:26 AM, Joe Stringer wrote:
> Add this iterator for spilled registers, it concentrates the details of
> how to get the current frame's spilled registers into a single macro
> while clarifying the intention of the code which is calling the macro.
> 
> Signed-off-by: Joe Stringer <j...@wand.net.nz>
> Acked-by: Alexei Starovoitov <a...@kernel.org>
> ---
>  include/linux/bpf_verifier.h | 11 +++++++++++
>  kernel/bpf/verifier.c        | 16 +++++++---------
>  2 files changed, 18 insertions(+), 9 deletions(-)
> 
> diff --git a/include/linux/bpf_verifier.h b/include/linux/bpf_verifier.h
> index b42b60a83e19..af262b97f586 100644
> --- a/include/linux/bpf_verifier.h
> +++ b/include/linux/bpf_verifier.h
> @@ -131,6 +131,17 @@ struct bpf_verifier_state {
>       u32 curframe;
>  };
>  
> +#define __get_spilled_reg(slot, frame)                                       
> \
> +     (((slot < frame->allocated_stack / BPF_REG_SIZE) &&             \
> +       (frame->stack[slot].slot_type[0] == STACK_SPILL))             \
> +      ? &frame->stack[slot].spilled_ptr : NULL)
> +
> +/* Iterate over 'frame', setting 'reg' to either NULL or a spilled register. 
> */
> +#define for_each_spilled_reg(iter, frame, reg)                               
> \
> +     for (iter = 0, reg = __get_spilled_reg(iter, frame);            \
> +          iter < frame->allocated_stack / BPF_REG_SIZE;              \
> +          iter++, reg = __get_spilled_reg(iter, frame))
> +

(Just a very small nit: please make sure this has a bpf_ prefix given this
is a global kernel header.)

Reply via email to