Thread (23 messages) flat view 23 messages, 4 authors, 2020-06-27

Re: [PATCH v2 bpf-next 2/4] bpf: introduce helper bpf_get_task_stak()

From: Song Liu <hidden>
Date: 2020-06-26 22:38:22
Also in: bpf, lkml

On Jun 26, 2020, at 8:40 AM, Yonghong Song [off-list ref] wrote:



On 6/25/20 5:13 PM, Song Liu wrote:
quoted
Introduce helper bpf_get_task_stack(), which dumps stack trace of given
task. This is different to bpf_get_stack(), which gets stack track of
current task. One potential use case of bpf_get_task_stack() is to call
it from bpf_iter__task and dump all /proc/<pid>/stack to a seq_file.
bpf_get_task_stack() uses stack_trace_save_tsk() instead of
get_perf_callchain() for kernel stack. The benefit of this choice is that
stack_trace_save_tsk() doesn't require changes in arch/. The downside of
using stack_trace_save_tsk() is that stack_trace_save_tsk() dumps the
stack trace to unsigned long array. For 32-bit systems, we need to
translate it to u64 array.
Signed-off-by: Song Liu <redacted>
[...]
quoted
+++ b/include/uapi/linux/bpf.h
@@ -3252,6 +3252,38 @@ union bpf_attr {
  * 		case of **BPF_CSUM_LEVEL_QUERY**, the current skb->csum_level
  * 		is returned or the error code -EACCES in case the skb is not
  * 		subject to CHECKSUM_UNNECESSARY.
+ *
+ * int bpf_get_task_stack(struct task_struct *task, void *buf, u32 size, u64 flags)
Andrii's recent patch changed the return type to 'long' to align with
kernel u64 return type for better llvm code generation.

Please rebase and you will see the new convention.
Will fix. 
quoted
+ *	Description
[...]
quoted
 +static struct perf_callchain_entry *
+get_callchain_entry_for_task(struct task_struct *task, u32 init_nr)
+{
+	struct perf_callchain_entry *entry;
+	int rctx;
+
+	entry = get_callchain_entry(&rctx);
+
+	if (rctx == -1)
+		return NULL;
Is this needed? Should be below !entry enough?
It is needed before Peter's suggestion. After applying Peter's patch, 
this is no longer needed. 

Thanks,
Song

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help