• Andrii Nakryiko's avatar
    bpf: decouple prune and jump points · bffdeaa8
    Andrii Nakryiko authored
    BPF verifier marks some instructions as prune points. Currently these
    prune points serve two purposes.
    
    It's a point where verifier tries to find previously verified state and
    check current state's equivalence to short circuit verification for
    current code path.
    
    But also currently it's a point where jump history, used for precision
    backtracking, is updated. This is done so that non-linear flow of
    execution could be properly backtracked.
    
    Such coupling is coincidental and unnecessary. Some prune points are not
    part of some non-linear jump path, so don't need update of jump history.
    On the other hand, not all instructions which have to be recorded in
    jump history necessarily are good prune points.
    
    This patch splits prune and jump points into independent flags.
    Currently all prune points are marked as jump points to minimize amount
    of changes in this patch, but next patch will perform some optimization
    of prune vs jmp point placement.
    
    No functional changes are intended.
    Acked-by: default avatarJohn Fastabend <john.fastabend@gmail.com>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/r/20221206233345.438540-2-andrii@kernel.orgSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    bffdeaa8
verifier.c 488 KB