Commit 06d5a7af authored by Alexander Usyskin's avatar Alexander Usyskin Committed by Greg Kroah-Hartman
Browse files

mei: trace: treat reg parameter as string



The commit
afd2627f ("tracing: Check "%s" dereference via the field and not the TP_printk format")
forbids to emit event with a plain char* without a wrapper.

The reg parameter always passed as static string and wrapper
is not strictly required, contrary to dev parameter.
Use the string wrapper anyway to check sanity of the reg parameters,
store it value independently and prevent internal kernel data leaks.

Since some code refactoring has taken place, explicit backporting may
be needed for kernels older than 6.10.

Cc: stable@vger.kernel.org  # v6.11+
Fixes: a0a927d0 ("mei: me: add io register tracing")
Signed-off-by: default avatarAlexander Usyskin <alexander.usyskin@intel.com>
Link: https://patch.msgid.link/20260111145125.1754912-1-alexander.usyskin@intel.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 054e1c0e
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -21,18 +21,18 @@ TRACE_EVENT(mei_reg_read,
	TP_ARGS(dev, reg, offs, val),
	TP_STRUCT__entry(
		__string(dev, dev_name(dev))
		__field(const char *, reg)
		__string(reg, reg)
		__field(u32, offs)
		__field(u32, val)
	),
	TP_fast_assign(
		__assign_str(dev);
		__entry->reg  = reg;
		__assign_str(reg);
		__entry->offs = offs;
		__entry->val = val;
	),
	TP_printk("[%s] read %s:[%#x] = %#x",
		  __get_str(dev), __entry->reg, __entry->offs, __entry->val)
		  __get_str(dev), __get_str(reg), __entry->offs, __entry->val)
);

TRACE_EVENT(mei_reg_write,
@@ -40,18 +40,18 @@ TRACE_EVENT(mei_reg_write,
	TP_ARGS(dev, reg, offs, val),
	TP_STRUCT__entry(
		__string(dev, dev_name(dev))
		__field(const char *, reg)
		__string(reg, reg)
		__field(u32, offs)
		__field(u32, val)
	),
	TP_fast_assign(
		__assign_str(dev);
		__entry->reg = reg;
		__assign_str(reg);
		__entry->offs = offs;
		__entry->val = val;
	),
	TP_printk("[%s] write %s[%#x] = %#x",
		  __get_str(dev), __entry->reg,  __entry->offs, __entry->val)
		  __get_str(dev), __get_str(reg),  __entry->offs, __entry->val)
);

TRACE_EVENT(mei_pci_cfg_read,
@@ -59,18 +59,18 @@ TRACE_EVENT(mei_pci_cfg_read,
	TP_ARGS(dev, reg, offs, val),
	TP_STRUCT__entry(
		__string(dev, dev_name(dev))
		__field(const char *, reg)
		__string(reg, reg)
		__field(u32, offs)
		__field(u32, val)
	),
	TP_fast_assign(
		__assign_str(dev);
		__entry->reg  = reg;
		__assign_str(reg);
		__entry->offs = offs;
		__entry->val = val;
	),
	TP_printk("[%s] pci cfg read %s:[%#x] = %#x",
		  __get_str(dev), __entry->reg, __entry->offs, __entry->val)
		  __get_str(dev), __get_str(reg), __entry->offs, __entry->val)
);

#endif /* _MEI_TRACE_H_ */