Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 18563313 authored by Sayali Lokhande's avatar Sayali Lokhande Committed by Gerrit - the friendly Code Review server
Browse files

trace: f2fs: Fix kasan slab-out-of-bounds



This patch fixes the following KASAN report:

KASAN: slab-out-of-bounds in string+0xb4/0x120
Read of size 1 at addr fffffffbf2f3b510 by task atrace/9219

Call trace:
dump_backtrace+0x0/0x3e8
show_stack+0x20/0x30
dump_stack+0x13c/0x198
print_address_description+0x80/0x2e0
kasan_report_error+0x1ac/0x210
__asan_report_load2_noabort+0x0/0xb8
string+0xb4/0x120
vsnprintf+0x5f4/0x1658
seq_buf_vprintf+0x11c/0x200
trace_seq_printf+0x1a8/0x320
trace_raw_output_f2fs_lookup_start+0xe8/0x158
print_trace_line+0x3cc/0xeb0
s_show+0x154/0x248
seq_read+0x8a8/0x1378
__vfs_read+0xfc/0x550
vfs_read+0x108/0x268
ksys_read+0x124/0x2b0

Correctly assign name string for f2fs trace.

Change-Id: I8ed0cf7c542ead06479fb4fde65b01b5e739e6db
Signed-off-by: default avatarSayali Lokhande <sayalil@codeaurora.org>
parent 3341616d
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -334,7 +334,7 @@ TRACE_EVENT(f2fs_unlink_enter,
		__field(ino_t,	ino)
		__field(loff_t,	size)
		__field(blkcnt_t, blocks)
		__field(const char *,	name)
		__string(name, dentry->d_name.name)
	),

	TP_fast_assign(
@@ -342,7 +342,7 @@ TRACE_EVENT(f2fs_unlink_enter,
		__entry->ino	= dir->i_ino;
		__entry->size	= dir->i_size;
		__entry->blocks	= dir->i_blocks;
		__entry->name	= dentry->d_name.name;
		__assign_str(name, dentry->d_name.name);
	),

	TP_printk("dev = (%d,%d), dir ino = %lu, i_size = %lld, "
@@ -350,7 +350,7 @@ TRACE_EVENT(f2fs_unlink_enter,
		show_dev_ino(__entry),
		__entry->size,
		(unsigned long long)__entry->blocks,
		__entry->name)
		__get_str(name))
);

DEFINE_EVENT(f2fs__inode_exit, f2fs_unlink_exit,
@@ -811,20 +811,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)
);

@@ -838,7 +838,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)
	),
@@ -846,14 +846,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)
);