On Mon, 2020-12-07 at 20:55 +0100, Florent Revest wrote: > This avoids > ld: kernel/trace/bpf_trace.o: in function `bpf_sock_from_file': > bpf_trace.c:(.text+0xe23): undefined reference to `sock_from_file' > When compiling a kernel with BPF and without NET. > > Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> > Signed-off-by: Florent Revest <revest@xxxxxxxxxxxx> > --- > kernel/trace/bpf_trace.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c > index 0cf0a6331482..877123bae71f 100644 > --- a/kernel/trace/bpf_trace.c > +++ b/kernel/trace/bpf_trace.c > @@ -1272,7 +1272,11 @@ const struct bpf_func_proto > bpf_snprintf_btf_proto = { > > BPF_CALL_1(bpf_sock_from_file, struct file *, file) > { > +#ifdef CONFIG_NET > return (unsigned long) sock_from_file(file); > +#else > + return NULL; Ugh, and of course I messed up my fix... :) Now this causes a: ./include/linux/stddef.h:8:14: warning: returning ‘void *’ from a function with return type ‘u64’ {aka ‘long long unsigned int’} makes integer from pointer without a cast [-Wint-conversion] 8 | #define NULL ((void *)0) | ^ kernel/trace/bpf_trace.c:1278:9: note: in expansion of macro ‘NULL’ 1278 | return NULL; So I'm sending a v2!