FAILED: patch "[PATCH] bpf: Adjust BPF stack helper functions to accommodate skip >" failed to apply to 5.4-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From ee2a098851bfbe8bcdd964c0121f4246f00ff41e Mon Sep 17 00:00:00 2001
From: Namhyung Kim <[email protected]>
Date: Mon, 14 Mar 2022 11:20:41 -0700
Subject: [PATCH] bpf: Adjust BPF stack helper functions to accommodate skip >
0
Let's say that the caller has storage for num_elem stack frames. Then, the BPF stack helper functions walk the stack for only num_elem frames. This means that if skip > 0, one keeps only 'num_elem - skip' frames.
This is because it sets init_nr in the perf_callchain_entry to the end of the buffer to save num_elem entries only. I believe it was because the perf callchain code unwound the stack frames until it reached the global max size (sysctl_perf_event_max_stack).
However it now has perf_callchain_entry_ctx.max_stack to limit the iteration locally. This simplifies the code to handle init_nr in the BPF callstack entries and removes the confusion with the perf_event's __PERF_SAMPLE_CALLCHAIN_EARLY which sets init_nr to 0.
Also change the comment on bpf_get_stack() in the header file to be more explicit what the return value means.
include/uapi/linux/bpf.h +4 -4
@@ -3009,8 +3009,8 @@ union bpf_attr {* * # sysctl kernel.perf_event_max_stack=<new value> * Return -* A non-negative value equal to or less than *size* on success, -* or a negative error in case of failure. +* The non-negative copied *buf* length equal to or less than +* *size* on success, or a negative error in case of failure. * * long bpf_skb_load_bytes_relative(const void *skb, u32 offset, void *to, u32 len, u32 start_header) * Description
@@ -4316,8 +4316,8 @@ union bpf_attr {* * # sysctl kernel.perf_event_max_stack=<new value> * Return -* A non-negative value equal to or less than *size* on success, -* or a negative error in case of failure. +* The non-negative copied *buf* length equal to or less than +* *size* on success, or a negative error in case of failure. * * long bpf_load_hdr_opt(struct bpf_sock_ops *skops, void *searchby_res, u32 len, u64 flags) * Description
kernel/bpf/stackmap.c +24 -32
127 lines not on this page · raw message