]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mei: trace: treat reg parameter as string
authorAlexander Usyskin <alexander.usyskin@intel.com>
Sun, 11 Jan 2026 14:51:25 +0000 (16:51 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 16 Jan 2026 15:43:47 +0000 (16:43 +0100)
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>
drivers/misc/mei/mei-trace.h

index 5312edbf5190d781b26e0966446533aef227343d..24fa321d88bd8b5823d9647260118731b5c30baa 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);
-               __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_ */