]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mei: trace: treat reg parameter as string
authorAlexander Usyskin <alexander.usyskin@intel.com>
Wed, 28 Jan 2026 22:20:19 +0000 (17:20 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 6 Feb 2026 15:44:19 +0000 (16:44 +0100)
[ Upstream commit 06d5a7afe1d0b47102936d8fba568572c2b4b941 ]

The commit
afd2627f727b ("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: a0a927d06d79 ("mei: me: add io register tracing")
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Link: https://patch.msgid.link/20260111145125.1754912-1-alexander.usyskin@intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
[ adapted __assign_str() calls to use two arguments ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/mei/mei-trace.h

index fe46ff2b9d69f5d941e24be136967d3290ecb022..770e7897b88cc16d8fb56a66e4d743b5f43db9d0 100644 (file)
@@ -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, dev_name(dev));
-               __entry->reg  = reg;
+               __assign_str(reg, 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, dev_name(dev));
-               __entry->reg = reg;
+               __assign_str(reg, 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, dev_name(dev));
-               __entry->reg  = reg;
+               __assign_str(reg, 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_ */