perf daemon: Fix file leak in daemon_session__control
authorSamasth Norway Ananda <samasth.norway.ananda@oracle.com>
Fri, 10 May 2024 00:34:24 +0000 (17:34 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 10 May 2024 14:28:11 +0000 (11:28 -0300)
The open() function returns -1 on error.

The 'control' and 'ack' file descriptors are both initialized with
open() and further validated with 'if' statement.

'if (!control)' would evaluate to 'true' if returned value on error were
'0' but it is actually '-1'.

Fixes: edcaa47958c7438b ("perf daemon: Add 'ping' command")
Signed-off-by: Samasth Norway Ananda <samasth.norway.ananda@oracle.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20240510003424.2016914-1-samasth.norway.ananda@oracle.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-daemon.c

index 83954af36753a9dd0815293d985d35ef34bd3345..de76bbc50bfbcbb6323bef3f67a8953c1978d03e 100644 (file)
@@ -523,7 +523,7 @@ static int daemon_session__control(struct daemon_session *session,
                  session->base, SESSION_CONTROL);
 
        control = open(control_path, O_WRONLY|O_NONBLOCK);
-       if (!control)
+       if (control < 0)
                return -1;
 
        if (do_ack) {
@@ -532,7 +532,7 @@ static int daemon_session__control(struct daemon_session *session,
                          session->base, SESSION_ACK);
 
                ack = open(ack_path, O_RDONLY, O_NONBLOCK);
-               if (!ack) {
+               if (ack < 0) {
                        close(control);
                        return -1;
                }