2021-03-03 02:59:44

by Jiri Olsa

[permalink] [raw]
Subject: [PATCH 1/2] perf daemon: Fix control fifo permissions

Add proper mode for mkfifo calls to get read and
write permissions for user. We can't use O_RDWR
in here, changing to standard permission value.

Fixes: 6a6d1804a190 ("perf daemon: Set control fifo for session")
Signed-off-by: Jiri Olsa <[email protected]>
---
tools/perf/builtin-daemon.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/perf/builtin-daemon.c b/tools/perf/builtin-daemon.c
index 617feaf020f6..8f0ed2e59280 100644
--- a/tools/perf/builtin-daemon.c
+++ b/tools/perf/builtin-daemon.c
@@ -373,12 +373,12 @@ static int daemon_session__run(struct daemon_session *session,
dup2(fd, 2);
close(fd);

- if (mkfifo(SESSION_CONTROL, O_RDWR) && errno != EEXIST) {
+ if (mkfifo(SESSION_CONTROL, 0600) && errno != EEXIST) {
perror("failed: create control fifo");
return -1;
}

- if (mkfifo(SESSION_ACK, O_RDWR) && errno != EEXIST) {
+ if (mkfifo(SESSION_ACK, 0600) && errno != EEXIST) {
perror("failed: create ack fifo");
return -1;
}
--
2.29.2


2021-03-03 02:59:44

by Jiri Olsa

[permalink] [raw]
Subject: [PATCH 2/2] perf daemon: Allow test for non root user

John reported that the daemon test is not working for
non root user. Changing the tests configurations so
it's allowed to run under normal user.

Fixes: 2291bb915b55 ("perf tests: Add daemon 'list' command test")
Reported-by: John Garry <[email protected]>
Tested-by: John Garry <[email protected]>
Signed-off-by: Jiri Olsa <[email protected]>
---
tools/perf/tests/shell/daemon.sh | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/tools/perf/tests/shell/daemon.sh b/tools/perf/tests/shell/daemon.sh
index e5b824dd08d9..5ad3ca8d681b 100755
--- a/tools/perf/tests/shell/daemon.sh
+++ b/tools/perf/tests/shell/daemon.sh
@@ -140,10 +140,10 @@ test_list()
base=BASE

[session-size]
-run = -e cpu-clock
+run = -e cpu-clock -m 1 sleep 10

[session-time]
-run = -e task-clock
+run = -e task-clock -m 1 sleep 10
EOF

sed -i -e "s|BASE|${base}|" ${config}
@@ -159,14 +159,14 @@ EOF
# check 1st session
# pid:size:-e cpu-clock:base/size:base/size/output:base/size/control:base/size/ack:0
local line=`perf daemon --config ${config} -x: | head -2 | tail -1`
- check_line_other "${line}" size "-e cpu-clock" ${base}/session-size \
+ check_line_other "${line}" size "-e cpu-clock -m 1 sleep 10" ${base}/session-size \
${base}/session-size/output ${base}/session-size/control \
${base}/session-size/ack "0"

# check 2nd session
# pid:time:-e task-clock:base/time:base/time/output:base/time/control:base/time/ack:0
local line=`perf daemon --config ${config} -x: | head -3 | tail -1`
- check_line_other "${line}" time "-e task-clock" ${base}/session-time \
+ check_line_other "${line}" time "-e task-clock -m 1 sleep 10" ${base}/session-time \
${base}/session-time/output ${base}/session-time/control \
${base}/session-time/ack "0"

@@ -190,10 +190,10 @@ test_reconfig()
base=BASE

[session-size]
-run = -e cpu-clock
+run = -e cpu-clock -m 1 sleep 10

[session-time]
-run = -e task-clock
+run = -e task-clock -m 1 sleep 10
EOF

sed -i -e "s|BASE|${base}|" ${config}
@@ -204,7 +204,7 @@ EOF
# check 2nd session
# pid:time:-e task-clock:base/time:base/time/output:base/time/control:base/time/ack:0
local line=`perf daemon --config ${config} -x: | head -3 | tail -1`
- check_line_other "${line}" time "-e task-clock" ${base}/session-time \
+ check_line_other "${line}" time "-e task-clock -m 1 sleep 10" ${base}/session-time \
${base}/session-time/output ${base}/session-time/control ${base}/session-time/ack "0"
local pid=`echo "${line}" | awk 'BEGIN { FS = ":" } ; { print $1 }'`

@@ -215,10 +215,10 @@ EOF
base=BASE

[session-size]
-run = -e cpu-clock
+run = -e cpu-clock -m 1 sleep 10

[session-time]
-run = -e cpu-clock
+run = -e cpu-clock -m 1 sleep 10
EOF

# TEST 1 - change config
@@ -238,7 +238,7 @@ EOF
# check reconfigured 2nd session
# pid:time:-e task-clock:base/time:base/time/output:base/time/control:base/time/ack:0
local line=`perf daemon --config ${config} -x: | head -3 | tail -1`
- check_line_other "${line}" time "-e cpu-clock" ${base}/session-time \
+ check_line_other "${line}" time "-e cpu-clock -m 1 sleep 10" ${base}/session-time \
${base}/session-time/output ${base}/session-time/control ${base}/session-time/ack "0"

# TEST 2 - empty config
@@ -309,10 +309,10 @@ test_stop()
base=BASE

[session-size]
-run = -e cpu-clock
+run = -e cpu-clock -m 1 sleep 10

[session-time]
-run = -e task-clock
+run = -e task-clock -m 1 sleep 10
EOF

sed -i -e "s|BASE|${base}|" ${config}
@@ -361,7 +361,7 @@ test_signal()
base=BASE

[session-test]
-run = -e cpu-clock --switch-output
+run = -e cpu-clock --switch-output -m 1 sleep 10
EOF

sed -i -e "s|BASE|${base}|" ${config}
@@ -400,10 +400,10 @@ test_ping()
base=BASE

[session-size]
-run = -e cpu-clock
+run = -e cpu-clock -m 1 sleep 10

[session-time]
-run = -e task-clock
+run = -e task-clock -m 1 sleep 10
EOF

sed -i -e "s|BASE|${base}|" ${config}
@@ -439,7 +439,7 @@ test_lock()
base=BASE

[session-size]
-run = -e cpu-clock
+run = -e cpu-clock -m 1 sleep 10
EOF

sed -i -e "s|BASE|${base}|" ${config}
--
2.29.2

2021-03-04 06:25:40

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH 1/2] perf daemon: Fix control fifo permissions

Em Mon, Mar 01, 2021 at 01:25:09PM +0100, Jiri Olsa escreveu:
> Add proper mode for mkfifo calls to get read and
> write permissions for user. We can't use O_RDWR
> in here, changing to standard permission value.

Thanks, applied both patches to perf/urgent.

- Arnaldo


> Fixes: 6a6d1804a190 ("perf daemon: Set control fifo for session")
> Signed-off-by: Jiri Olsa <[email protected]>
> ---
> tools/perf/builtin-daemon.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/builtin-daemon.c b/tools/perf/builtin-daemon.c
> index 617feaf020f6..8f0ed2e59280 100644
> --- a/tools/perf/builtin-daemon.c
> +++ b/tools/perf/builtin-daemon.c
> @@ -373,12 +373,12 @@ static int daemon_session__run(struct daemon_session *session,
> dup2(fd, 2);
> close(fd);
>
> - if (mkfifo(SESSION_CONTROL, O_RDWR) && errno != EEXIST) {
> + if (mkfifo(SESSION_CONTROL, 0600) && errno != EEXIST) {
> perror("failed: create control fifo");
> return -1;
> }
>
> - if (mkfifo(SESSION_ACK, O_RDWR) && errno != EEXIST) {
> + if (mkfifo(SESSION_ACK, 0600) && errno != EEXIST) {
> perror("failed: create ack fifo");
> return -1;
> }
> --
> 2.29.2
>

--

- Arnaldo