bpf: sanitize bpf tracepoint access
during bpf program loading remember the last byte of ctx access and at the time of attaching the program to tracepoint check that the program doesn't access bytes beyond defined in tracepoint fields This also disallows access to __dynamic_array fields, but can be relaxed in the future. Signed-off-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
9940d67c93
commit
32bbe0078a
@@ -652,8 +652,12 @@ static int check_ctx_access(struct verifier_env *env, int off, int size,
|
||||
enum bpf_access_type t)
|
||||
{
|
||||
if (env->prog->aux->ops->is_valid_access &&
|
||||
env->prog->aux->ops->is_valid_access(off, size, t))
|
||||
env->prog->aux->ops->is_valid_access(off, size, t)) {
|
||||
/* remember the offset of last byte accessed in ctx */
|
||||
if (env->prog->aux->max_ctx_offset < off + size)
|
||||
env->prog->aux->max_ctx_offset = off + size;
|
||||
return 0;
|
||||
}
|
||||
|
||||
verbose("invalid bpf_context access off=%d size=%d\n", off, size);
|
||||
return -EACCES;
|
||||
|
Reference in New Issue
Block a user