• Daniel Borkmann's avatar
    bpf: fix direct packet access for flow dissector progs · 5d66fa7d
    Daniel Borkmann authored
    Commit d58e468b ("flow_dissector: implements flow dissector BPF
    hook") added direct packet access for skbs in may_access_direct_pkt_data()
    function where this enables read and write access to the skb->data. This
    is buggy because without a prologue generator such as bpf_unclone_prologue()
    we would allow for writing into cloned skbs. Original intention might have
    been to only allow read access where this is not needed (similar as the
    flow_dissector_func_proto() indicates which enables only bpf_skb_load_bytes()
    as well), therefore this patch fixes it to restrict to read-only.
    
    Fixes: d58e468b ("flow_dissector: implements flow dissector BPF hook")
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Cc: Petar Penkov <ppenkov@google.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    5d66fa7d
verifier.c 187 KB