Commit fdeb17c7 authored by Hui Su's avatar Hui Su Committed by Jan Kara

trace: fix potenial dangerous pointer

The bdi_dev_name() returns a char [64], and
the __entry->name is a char [32].

It maybe dangerous to TP_printk("%s", __entry->name)
after the strncpy().

CC: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20201124165205.GA23937@rlkAcked-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
Acked-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarHui Su <sh_def@163.com>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
parent 127c501a
...@@ -190,7 +190,7 @@ TRACE_EVENT(inode_foreign_history, ...@@ -190,7 +190,7 @@ TRACE_EVENT(inode_foreign_history,
), ),
TP_fast_assign( TP_fast_assign(
strncpy(__entry->name, bdi_dev_name(inode_to_bdi(inode)), 32); strscpy_pad(__entry->name, bdi_dev_name(inode_to_bdi(inode)), 32);
__entry->ino = inode->i_ino; __entry->ino = inode->i_ino;
__entry->cgroup_ino = __trace_wbc_assign_cgroup(wbc); __entry->cgroup_ino = __trace_wbc_assign_cgroup(wbc);
__entry->history = history; __entry->history = history;
...@@ -219,7 +219,7 @@ TRACE_EVENT(inode_switch_wbs, ...@@ -219,7 +219,7 @@ TRACE_EVENT(inode_switch_wbs,
), ),
TP_fast_assign( TP_fast_assign(
strncpy(__entry->name, bdi_dev_name(old_wb->bdi), 32); strscpy_pad(__entry->name, bdi_dev_name(old_wb->bdi), 32);
__entry->ino = inode->i_ino; __entry->ino = inode->i_ino;
__entry->old_cgroup_ino = __trace_wb_assign_cgroup(old_wb); __entry->old_cgroup_ino = __trace_wb_assign_cgroup(old_wb);
__entry->new_cgroup_ino = __trace_wb_assign_cgroup(new_wb); __entry->new_cgroup_ino = __trace_wb_assign_cgroup(new_wb);
...@@ -252,7 +252,7 @@ TRACE_EVENT(track_foreign_dirty, ...@@ -252,7 +252,7 @@ TRACE_EVENT(track_foreign_dirty,
struct address_space *mapping = page_mapping(page); struct address_space *mapping = page_mapping(page);
struct inode *inode = mapping ? mapping->host : NULL; struct inode *inode = mapping ? mapping->host : NULL;
strncpy(__entry->name, bdi_dev_name(wb->bdi), 32); strscpy_pad(__entry->name, bdi_dev_name(wb->bdi), 32);
__entry->bdi_id = wb->bdi->id; __entry->bdi_id = wb->bdi->id;
__entry->ino = inode ? inode->i_ino : 0; __entry->ino = inode ? inode->i_ino : 0;
__entry->memcg_id = wb->memcg_css->id; __entry->memcg_id = wb->memcg_css->id;
...@@ -285,7 +285,7 @@ TRACE_EVENT(flush_foreign, ...@@ -285,7 +285,7 @@ TRACE_EVENT(flush_foreign,
), ),
TP_fast_assign( TP_fast_assign(
strncpy(__entry->name, bdi_dev_name(wb->bdi), 32); strscpy_pad(__entry->name, bdi_dev_name(wb->bdi), 32);
__entry->cgroup_ino = __trace_wb_assign_cgroup(wb); __entry->cgroup_ino = __trace_wb_assign_cgroup(wb);
__entry->frn_bdi_id = frn_bdi_id; __entry->frn_bdi_id = frn_bdi_id;
__entry->frn_memcg_id = frn_memcg_id; __entry->frn_memcg_id = frn_memcg_id;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment