]> www.infradead.org Git - users/hch/xfs.git/commitdiff
xfs: fix file_path handling in tracepoints
authorDarrick J. Wong <djwong@kernel.org>
Tue, 9 Jul 2024 14:43:42 +0000 (07:43 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 31 Jul 2024 01:52:44 +0000 (18:52 -0700)
Since file_path() takes the output buffer as one of its arguments, we
might as well have it format directly into the tracepoint's char array
instead of wasting stack space.

Fixes: 3934e8ebb7cc6 ("xfs: create a big array data structure")
Fixes: 5076a6040ca16 ("xfs: support in-memory buffer cache targets")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202403290419.HPcyvqZu-lkp@intel.com/
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/scrub/trace.h
fs/xfs/xfs_trace.h

index 92ef4cdc486e901ab786bc538faf061c350270d5..c886d5d0eb021a7683a3f84d2819be052697c305 100644 (file)
@@ -959,18 +959,16 @@ TRACE_EVENT(xfile_create,
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(unsigned long, ino)
-               __array(char, pathname, 256)
+               __array(char, pathname, MAXNAMELEN)
        ),
        TP_fast_assign(
-               char            pathname[257];
                char            *path;
 
                __entry->ino = file_inode(xf->file)->i_ino;
-               memset(pathname, 0, sizeof(pathname));
-               path = file_path(xf->file, pathname, sizeof(pathname) - 1);
+               path = file_path(xf->file, __entry->pathname, MAXNAMELEN);
                if (IS_ERR(path))
-                       path = "(unknown)";
-               strncpy(__entry->pathname, path, sizeof(__entry->pathname));
+                       strncpy(__entry->pathname, "(unknown)",
+                                       sizeof(__entry->pathname));
        ),
        TP_printk("xfino 0x%lx path '%s'",
                  __entry->ino,
index 5646d300b2861e1f6de24594d17dabda371a80b2..180ce697305a92ea829f7e55ac5af55ce7ed8709 100644 (file)
@@ -4715,20 +4715,18 @@ TRACE_EVENT(xmbuf_create,
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(unsigned long, ino)
-               __array(char, pathname, 256)
+               __array(char, pathname, MAXNAMELEN)
        ),
        TP_fast_assign(
-               char            pathname[257];
                char            *path;
                struct file     *file = btp->bt_file;
 
                __entry->dev = btp->bt_mount->m_super->s_dev;
                __entry->ino = file_inode(file)->i_ino;
-               memset(pathname, 0, sizeof(pathname));
-               path = file_path(file, pathname, sizeof(pathname) - 1);
+               path = file_path(file, __entry->pathname, MAXNAMELEN);
                if (IS_ERR(path))
-                       path = "(unknown)";
-               strncpy(__entry->pathname, path, sizeof(__entry->pathname));
+                       strncpy(__entry->pathname, "(unknown)",
+                                       sizeof(__entry->pathname));
        ),
        TP_printk("dev %d:%d xmino 0x%lx path '%s'",
                  MAJOR(__entry->dev), MINOR(__entry->dev),