On Wed, Sep 01, 2021 at 04:53:44PM +0800, Hou Tao wrote: > Currently if a function ptr in struct_ops has a return value, its > caller will get a random return value from it, because the return > value of related BPF_PROG_TYPE_STRUCT_OPS prog is just dropped. > > So adding a new flag BPF_TRAMP_F_RET_FENTRY_RET to tell bpf trampoline > to save and return the return value of struct_ops prog if ret_size of > the function ptr is greater than 0. Also restricting the flag to be > used alone. Thanks for the report and fix! Sorry for the late reply. This bug is missed because the tcp-cc func is not always called. A better test needs to be created to force exercising these funcs in bpf_test_run(), which can be a follow-up patch in the bpf-next. Could you help to create this test as a follow up? The patch lgtm. However, it does not apply cleanly on bpf, so please rebase and repost. I applied it manually and tested it by hard coding to call the ->ssthresh() and observes the return value.