@@ -37,7 +37,6 @@ const char *default_log = "/var/log/cxl-monitor.log";
static struct monitor {
const char *log;
struct log_ctx ctx;
- FILE *log_file;
bool human;
bool verbose;
bool daemon;
@@ -192,8 +191,8 @@ int cmd_monitor(int argc, const char **argv, struct cxl_ctx *ctx)
if (strncmp(log, "./standard", 10) == 0)
monitor.ctx.log_fn = log_standard;
else {
- monitor.log_file = fopen(log, "a+");
- if (!monitor.log_file) {
+ monitor.ctx.log_file = fopen(log, "a+");
+ if (!monitor.ctx.log_file) {
rc = -errno;
error("open %s failed: %d\n", log, rc);
goto out;
@@ -212,7 +211,7 @@ int cmd_monitor(int argc, const char **argv, struct cxl_ctx *ctx)
rc = monitor_event(ctx);
out:
- if (monitor.log_file)
- fclose(monitor.log_file);
+ if (monitor.ctx.log_file)
+ fclose(monitor.ctx.log_file);
return rc;
}
Commit ba5825b0b7e0 ("ndctl/monitor: move common logging functions to util/log.c") have replaced monitor.log_file with monitor.ctx.log_file for ndctl-monitor, but for cxl-monitor, it forgot to do such work. So where user specifies its own logfile, a segmentation fault will be trggered like below: # build/cxl/cxl monitor -l ./monitor.log Segmentation fault (core dumped) Fixes: 299f69f974a6 ("cxl/monitor: add a new monitor command for CXL trace events") Signed-off-by: Li Zhijian <lizhijian@fujitsu.com> --- V2: exchange order of previous patch1 and patch2 # Alison a few commit log updated --- cxl/monitor.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)