# bpf:在bpf_map_lookup_percpu_elem()中检查rcu_read_lock_trace_held()
## 概述
在Linux内核中,`bpf_map_lookup_percpu_elem()`辅助函数在睡眠型BPF程序中使用时,如果没有适当持有`rcu_read_lock_trace`锁,会触发警告。为了解决此问题,需要增加缺失的检查。
## 影响版本
该漏洞影响Linux内核的多个版本,尤其是在BPF JIT禁用或32位主机配置下。
## 细节
`bpf_map_lookup_percpu_elem()`是一个BPF辅助函数,它在睡眠型BPF程序中可用。当BPF JIT被禁用或在32位主机上运行时,该函数不会被内联。因此,使用该函数会触发内核警告,因为它没有适当的持有`rcu_read_lock_trace`锁。
## 影响
该漏洞会导致BPF程序在某些配置下运行时产生运行时警告,影响了性能和稳定性。通过添加缺失的检查,可以确保正确的锁机制,提高系统稳定性和性能。
# | POC 描述 | 源链接 | 神龙链接 |
---|
标题: bpf: Check rcu_read_lock_trace_held() in bpf_map_lookup_percpu_elem() - kernel/git/stable/linux.git - Linux kernel stable tree -- 🔗来源链接
标签:
神龙速读