f2fs: fix up f2fs_lookup tracepoints
authorGao Xiang <hsiangkao@linux.alibaba.com>
Tue, 21 Sep 2021 14:37:30 +0000 (22:37 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Nov 2021 08:48:31 +0000 (09:48 +0100)
[ Upstream commit 70a9ac36ffd807ac506ed0b849f3e8ce3c6623f2 ]

Fix up a misuse that the filename pointer isn't always valid in
the ring buffer, and we should copy the content instead.

Fixes: 0c5e36db17f5 ("f2fs: trace f2fs_lookup")
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
include/trace/events/f2fs.h

index 4e881d9..4cb055a 100644 (file)
@@ -807,20 +807,20 @@ TRACE_EVENT(f2fs_lookup_start,
        TP_STRUCT__entry(
                __field(dev_t,  dev)
                __field(ino_t,  ino)
-               __field(const char *,   name)
+               __string(name,  dentry->d_name.name)
                __field(unsigned int, flags)
        ),
 
        TP_fast_assign(
                __entry->dev    = dir->i_sb->s_dev;
                __entry->ino    = dir->i_ino;
-               __entry->name   = dentry->d_name.name;
+               __assign_str(name, dentry->d_name.name);
                __entry->flags  = flags;
        ),
 
        TP_printk("dev = (%d,%d), pino = %lu, name:%s, flags:%u",
                show_dev_ino(__entry),
-               __entry->name,
+               __get_str(name),
                __entry->flags)
 );
 
@@ -834,7 +834,7 @@ TRACE_EVENT(f2fs_lookup_end,
        TP_STRUCT__entry(
                __field(dev_t,  dev)
                __field(ino_t,  ino)
-               __field(const char *,   name)
+               __string(name,  dentry->d_name.name)
                __field(nid_t,  cino)
                __field(int,    err)
        ),
@@ -842,14 +842,14 @@ TRACE_EVENT(f2fs_lookup_end,
        TP_fast_assign(
                __entry->dev    = dir->i_sb->s_dev;
                __entry->ino    = dir->i_ino;
-               __entry->name   = dentry->d_name.name;
+               __assign_str(name, dentry->d_name.name);
                __entry->cino   = ino;
                __entry->err    = err;
        ),
 
        TP_printk("dev = (%d,%d), pino = %lu, name:%s, ino:%u, err:%d",
                show_dev_ino(__entry),
-               __entry->name,
+               __get_str(name),
                __entry->cino,
                __entry->err)
 );