bpf_sock_from_file should not dereference a NULL file pointer.
KASAN detects a null-ptr-deref when eBPF tracing
fentry/fexit programs are attached to points such as
__mmap_region and file_map_prot_check kernel functions. This can
result in a NULL file pointer flowing from context to the helper.
A minimal check before dereferencing can fix this.
Fixes: b60da4955f53 ("bpf: Only provide bpf_sock_from_file with CONFIG_NET")
Signed-off-by: MahnurA <redacted>
---
net/core/filter.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/net/core/filter.c b/net/core/filter.c
index 16845987b244..7c3caae4bafc 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -12182,7 +12182,10 @@ const struct bpf_func_proto bpf_skc_to_mptcp_sock_proto = {
BPF_CALL_1(bpf_sock_from_file, struct file *, file)
{
- return (unsigned long)sock_from_file(file);
+ if (file)
+ return (unsigned long)sock_from_file(file);
+
+ return (unsigned long)NULL;
}
BTF_ID_LIST(bpf_sock_from_file_btf_ids)--
2.53.0