BPF filtering accesses fields in the netlink header that are
only filled in by libudev, never by the kernel. Therefore adding
BPF filters for kernel monitors is pointless. Even false filtering
of kernel events might be possible; at least it's hard to prove that
it can't occur.
(cherry picked from commit
d8ce385fe3e5be91b6f414415e10f8897e41d942)
if (m->filter_uptodate)
return 0;
- if (hashmap_isempty(m->subsystem_filter) &&
- set_isempty(m->tag_filter)) {
+ if (m->snl.nl.nl_groups == MONITOR_GROUP_KERNEL ||
+ (hashmap_isempty(m->subsystem_filter) &&
+ set_isempty(m->tag_filter))) {
m->filter_uptodate = true;
return 0;
}