perf bpf-filter: Fix a parsing error with comma
[ Upstream commit35d13f841a] The previous change to support cgroup filters introduced a bug that pathname can include commas. It confused the lexer to treat an item and the trailing comma as a single token. And it resulted in a parse error: $ sudo perf record -e cycles:P --filter 'period > 0, ip > 64' -- true perf_bpf_filter: Error: Unexpected item: 0, perf_bpf_filter: syntax error, unexpected BFT_ERROR, expecting BFT_NUM Usage: perf record [<options>] [<command>] or: perf record [<options>] -- <command> [<options>] --filter <filter> event filter It should get "0" and "," separately. An easiest fix would be to remove "," from the possible pathname characters. As it's for cgroup names, probably ok to assume it won't have commas in the pathname. I found that the existing BPF filtering test didn't have any complex filter condition with commas. Let's update the group filter test which is supposed to test filter combinations like this. Link: https://lore.kernel.org/r/20250307220922.434319-1-namhyung@kernel.org Fixes:91e88437d5("perf bpf-filter: Support filtering on cgroups") Reported-by: Sally Shi <sshii@google.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
2c3dea5d17
commit
8f178998af
@@ -89,7 +89,7 @@ test_bpf_filter_fail() {
|
||||
test_bpf_filter_group() {
|
||||
echo "Group bpf-filter test"
|
||||
|
||||
if ! perf record -e task-clock --filter 'period > 1000 || ip > 0' \
|
||||
if ! perf record -e task-clock --filter 'period > 1000, ip > 0' \
|
||||
-o /dev/null true 2>/dev/null
|
||||
then
|
||||
echo "Group bpf-filter test [Failed should succeed]"
|
||||
@@ -97,7 +97,7 @@ test_bpf_filter_group() {
|
||||
return
|
||||
fi
|
||||
|
||||
if ! perf record -e task-clock --filter 'cpu > 0 || ip > 0' \
|
||||
if ! perf record -e task-clock --filter 'period > 1000 , cpu > 0 || ip > 0' \
|
||||
-o /dev/null true 2>&1 | grep -q PERF_SAMPLE_CPU
|
||||
then
|
||||
echo "Group bpf-filter test [Failed forbidden CPU]"
|
||||
|
||||
@@ -76,7 +76,7 @@ static int path_or_error(void)
|
||||
num_dec [0-9]+
|
||||
num_hex 0[Xx][0-9a-fA-F]+
|
||||
space [ \t]+
|
||||
path [^ \t\n]+
|
||||
path [^ \t\n,]+
|
||||
ident [_a-zA-Z][_a-zA-Z0-9]+
|
||||
|
||||
%%
|
||||
|
||||
Reference in New Issue
Block a user