On Sun, 3 Apr 2022 15:24:33 +0000 Joel Fernandes <joel@xxxxxxxxxxxxxxxxx> wrote: > Something like the following seems to work, and the file grows to only 4KB. > Note with memfd, the file name does not have to be unique and the fd entry > in the process denotes the file's uniqueness. > > I'll roll it into a patch, let me know if you disagree: I'm OK with this, but I would really like a "Reviewed-by" from Tzvetomir. Go ahead and send a real patch. Thanks, -- Steve > > ---8<--- > > diff --git a/lib/trace-cmd/include/private/trace-cmd-private.h b/lib/trace-cmd/include/private/trace-cmd-private.h > index 6934376..3aee139 100644 > --- a/lib/trace-cmd/include/private/trace-cmd-private.h > +++ b/lib/trace-cmd/include/private/trace-cmd-private.h > @@ -377,7 +377,6 @@ enum tracecmd_msg_flags { > }; > > /* for both client and server */ > -#define MSG_CACHE_FILE "/tmp/trace_msg_cacheXXXXXX" > struct tracecmd_msg_handle { > int fd; > short cpu_count; > @@ -386,7 +385,6 @@ struct tracecmd_msg_handle { > bool done; > bool cache; > int cfd; > - char cfile[sizeof(MSG_CACHE_FILE)]; > }; > > struct tracecmd_tsync_protos { > diff --git a/lib/trace-cmd/trace-msg.c b/lib/trace-cmd/trace-msg.c > index 03b853e..1472f20 100644 > --- a/lib/trace-cmd/trace-msg.c > +++ b/lib/trace-cmd/trace-msg.c > @@ -593,11 +593,9 @@ tracecmd_msg_handle_alloc(int fd, unsigned long flags) > int tracecmd_msg_handle_cache(struct tracecmd_msg_handle *msg_handle) > { > if (msg_handle->cfd < 0) { > - strcpy(msg_handle->cfile, MSG_CACHE_FILE); > - msg_handle->cfd = mkstemp(msg_handle->cfile); > + msg_handle->cfd = memfd_create("trace_msg_cache", 0); > if (msg_handle->cfd < 0) > return -1; > - unlink(msg_handle->cfile); > } > msg_handle->cache = true; > return 0;