1

perf daemon: Fix file leak in daemon_session__control

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: edcaa47958 ("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>
This commit is contained in:
Samasth Norway Ananda 2024-05-09 17:34:24 -07:00 committed by Arnaldo Carvalho de Melo
parent 230a7a71f9
commit 0954160346

View File

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