Patch "cxl/trace: Properly initialize cxl_poison region name" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    cxl/trace: Properly initialize cxl_poison region name

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     cxl-trace-properly-initialize-cxl_poison-region-name.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 9251464200d978433a0c450763e2ec5f7be55455
Author: Alison Schofield <alison.schofield@xxxxxxxxx>
Date:   Thu Mar 14 13:12:17 2024 -0700

    cxl/trace: Properly initialize cxl_poison region name
    
    [ Upstream commit 6c871260965255a1c142fb77ccee58b172d1690b ]
    
    The TP_STRUCT__entry that gets assigned the region name, or an
    empty string if no region is present, is erroneously initialized
    to the cxl_region pointer. It needs to be properly initialized
    otherwise it's length is wrong and garbage chars can appear in
    the kernel trace output: /sys/kernel/tracing/trace
    
    The bad initialization was due in part to a naming conflict with
    the parameter: struct cxl_region *region. The field 'region' is
    already exposed externally as the region name, so changing that
    to something logical, like 'region_name' is not an option. Instead
    rename the internal only struct cxl_region to the commonly used
    'cxlr'.
    
    Impact is that tooling depending on that trace data can miss
    picking up a valid event when searching by region name. The
    TP_printk() output, if enabled, does emit the correct region
    names in the dmesg log.
    
    This was found during testing of the cxl-list option to report
    media-errors for a region.
    
    Cc: Davidlohr Bueso <dave@xxxxxxxxxxxx>
    Cc: Jonathan Cameron <jonathan.cameron@xxxxxxxxxx>
    Cc: Dave Jiang <dave.jiang@xxxxxxxxx>
    Cc: Vishal Verma <vishal.l.verma@xxxxxxxxx>
    Cc: stable@xxxxxxxxxxxxxxx
    Fixes: ddf49d57b841 ("cxl/trace: Add TRACE support for CXL media-error records")
    Signed-off-by: Alison Schofield <alison.schofield@xxxxxxxxx>
    Reviewed-by: Ira Weiny <ira.weiny@xxxxxxxxx>
    Acked-by: Dan Williams <dan.j.williams@xxxxxxxxx>
    Signed-off-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/cxl/core/trace.h b/drivers/cxl/core/trace.h
index a0b5819bc70b3..f01d0709c9c32 100644
--- a/drivers/cxl/core/trace.h
+++ b/drivers/cxl/core/trace.h
@@ -642,18 +642,18 @@ u64 cxl_trace_hpa(struct cxl_region *cxlr, struct cxl_memdev *memdev, u64 dpa);
 
 TRACE_EVENT(cxl_poison,
 
-	TP_PROTO(struct cxl_memdev *cxlmd, struct cxl_region *region,
+	TP_PROTO(struct cxl_memdev *cxlmd, struct cxl_region *cxlr,
 		 const struct cxl_poison_record *record, u8 flags,
 		 __le64 overflow_ts, enum cxl_poison_trace_type trace_type),
 
-	TP_ARGS(cxlmd, region, record, flags, overflow_ts, trace_type),
+	TP_ARGS(cxlmd, cxlr, record, flags, overflow_ts, trace_type),
 
 	TP_STRUCT__entry(
 		__string(memdev, dev_name(&cxlmd->dev))
 		__string(host, dev_name(cxlmd->dev.parent))
 		__field(u64, serial)
 		__field(u8, trace_type)
-		__string(region, region)
+		__string(region, cxlr ? dev_name(&cxlr->dev) : "")
 		__field(u64, overflow_ts)
 		__field(u64, hpa)
 		__field(u64, dpa)
@@ -673,10 +673,10 @@ TRACE_EVENT(cxl_poison,
 		__entry->source = cxl_poison_record_source(record);
 		__entry->trace_type = trace_type;
 		__entry->flags = flags;
-		if (region) {
-			__assign_str(region, dev_name(&region->dev));
-			memcpy(__entry->uuid, &region->params.uuid, 16);
-			__entry->hpa = cxl_trace_hpa(region, cxlmd,
+		if (cxlr) {
+			__assign_str(region, dev_name(&cxlr->dev));
+			memcpy(__entry->uuid, &cxlr->params.uuid, 16);
+			__entry->hpa = cxl_trace_hpa(cxlr, cxlmd,
 						     __entry->dpa);
 		} else {
 			__assign_str(region, "");




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux