tree ea47fe0bce789426d31d89489719543079b6eee0
parent c9bfc326acf5bd7e1e85cacf23672f4bb776a74b
author Alexei Starovoitov <ast@plumgrid.com> 1444101420 -0700
committer Alexei Starovoitov <ast@plumgrid.com> 1444270646 -0700

bpf: add unprivileged bpf tests

New tests added to test_verifier:
unpriv: return pointer
  checks that pointers cannot be returned from the eBPF progrom

unpriv: add const to pointer
unpriv: add pointer to pointer
unpriv: neg pointer
  checks that pointer arithmetic is disallowed

unpriv: cmp pointer with const
unpriv: cmp pointer with pointer
  checks that comparison of pointers is disallowed
  Only one case allowed 'void *value = bpf_map_lookup_elem(..); if (value == 0) ...'

unpriv: pass pointer to printk
  checks that pointers cannotbe passed as varargs of printk

unpriv: pass pointer to helper function
  checks that pointers cannot be passed to functions that expect integers
  If function expects a pointer it allows only that type of pointer.
  Like 1st argument of bpf_map_lookup_elem() must be pointer to map.
  (applies to non-root as well)

unpriv: indirectly pass pointer on stack to helper function
  checks that pointer stored into stack cannot be used as part of key
  to be passed into bpf_map_lookup_elem() and cannot be used as part
  of format string passed to bpf_trace_printk()

unpriv: mangle pointer on stack 1
unpriv: mangle pointer on stack 2
  checks that writing into stack slot that already contains a pointer
  is disallowed

unpriv: read pointer from stack in small chunks
  checks that < 8 byte read from stack slot that contains a pointer is
  disallowed

unpriv: write pointer into ctx
  checks that storing pointers into skb->fields is disallowed

unpriv: write pointer into map elem value
  checks that storing pointers into element values is disallowed
  For example:
  int bpf_prog(struct __sk_buff *skb)
  {
    u32 key = 0;
    u64 *value = bpf_map_lookup_elem(&map, &key);
    if (value)
       *value = (u64) skb;
  }
  will be rejected.

unpriv: partial copy of pointer
  checks that doing 32-bit register mov from register containing
  a pointer is disallowed

unpriv: pass pointer to bpf_tail_call
  checks that passing pointer as an index into bpf_tail_call
  is disallowed

Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
---
v1-v2:
- split tests into separate patch
- add tail_call test and explained tests in commit log
