• Martin KaFai Lau's avatar
    bpf: Introduce bpf_prog ID · dc4bb0e2
    Martin KaFai Lau authored
    This patch generates an unique ID for each BPF_PROG_LOAD-ed prog.
    It is worth to note that each BPF_PROG_LOAD-ed prog will have
    a different ID even they have the same bpf instructions.
    
    The ID is generated by the existing idr_alloc_cyclic().
    The ID is ranged from [1, INT_MAX).  It is allocated in cyclic manner,
    so an ID will get reused every 2 billion BPF_PROG_LOAD.
    
    The bpf_prog_alloc_id() is done after bpf_prog_select_runtime()
    because the jit process may have allocated a new prog.  Hence,
    we need to ensure the value of pointer 'prog' will not be changed
    any more before storing the prog to the prog_idr.
    
    After bpf_prog_select_runtime(), the prog is read-only.  Hence,
    the id is stored in 'struct bpf_prog_aux'.
    Signed-off-by: default avatarMartin KaFai Lau <kafai@fb.com>
    Acked-by: default avatarAlexei Starovoitov <ast@fb.com>
    Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    dc4bb0e2
bpf.h 11.7 KB