Petr Tesarik 44045a
From: Michael Kawano <mkawano@linux.ibm.com>
Petr Tesarik 44045a
Date: Thu, 7 Jul 2022 15:57:27 +0200
Petr Tesarik 44045a
Subject: vfio/ccw: Remove UUID from s390 debug log
Petr Tesarik 44045a
Git-commit: 3566ee1d776c1393393564b2514f9cd52a49c16e
Petr Tesarik 44045a
Patch-mainline: v6.0-rc1
Petr Tesarik 44045a
References: git-fixes
Petr Tesarik 44045a
Petr Tesarik 44045a
As vfio-ccw devices are created/destroyed, the uuid of the associated
Petr Tesarik 44045a
mdevs that are recorded in $S390DBF/vfio_ccw_msg/sprintf get lost.
Petr Tesarik 44045a
This is because a pointer to the UUID is stored instead of the UUID
Petr Tesarik 44045a
itself, and that memory may have been repurposed if/when the logs are
Petr Tesarik 44045a
examined. The result is usually garbage UUID data in the logs, though
Petr Tesarik 44045a
there is an outside chance of an oops happening here.
Petr Tesarik 44045a
Petr Tesarik 44045a
Simply remove the UUID from the traces, as the subchannel number will
Petr Tesarik 44045a
provide useful configuration information for problem determination,
Petr Tesarik 44045a
and is stored directly into the log instead of a pointer.
Petr Tesarik 44045a
Petr Tesarik 44045a
As we were the only consumer of mdev_uuid(), remove that too.
Petr Tesarik 44045a
Petr Tesarik 44045a
Cc: Kirti Wankhede <kwankhede@nvidia.com>
Petr Tesarik 44045a
Signed-off-by: Michael Kawano <mkawano@linux.ibm.com>
Petr Tesarik 44045a
Fixes: 60e05d1cf0875 ("vfio-ccw: add some logging")
Petr Tesarik 44045a
Fixes: b7701dfbf9832 ("vfio-ccw: Register a chp_event callback for vfio-ccw")
Petr Tesarik 44045a
[farman: reworded commit message, added Fixes: tags]
Petr Tesarik 44045a
Signed-off-by: Eric Farman <farman@linux.ibm.com>
Petr Tesarik 44045a
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Petr Tesarik 44045a
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
Petr Tesarik 44045a
Reviewed-by: Kirti Wankhede <kwankhede@nvidia.com>
Petr Tesarik 44045a
Link: https://lore.kernel.org/r/20220707135737.720765-2-farman@linux.ibm.com
Petr Tesarik 44045a
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Petr Tesarik 44045a
[ ptesarik: I have kept the "mdev" local variable in fsm_io_request().
Petr Tesarik 44045a
  It is still used in a call to cp_init(), because SLE15-SP4 does not
Petr Tesarik 44045a
  contain upstream commit 0a58795647cd4300470788ffdbff6b29b5f00632. ]
Petr Tesarik 44045a
Acked-by: Petr Tesarik <ptesarik@suse.com>
Petr Tesarik 44045a
---
Petr Tesarik 44045a
 drivers/s390/cio/vfio_ccw_drv.c |    5 ++---
Petr Tesarik 44045a
 drivers/s390/cio/vfio_ccw_fsm.c |   24 ++++++++++++------------
Petr Tesarik 44045a
 drivers/s390/cio/vfio_ccw_ops.c |    8 ++++----
Petr Tesarik 44045a
 include/linux/mdev.h            |    5 -----
Petr Tesarik 44045a
 4 files changed, 18 insertions(+), 24 deletions(-)
Petr Tesarik 44045a
Petr Tesarik 44045a
--- a/drivers/s390/cio/vfio_ccw_drv.c
Petr Tesarik 44045a
+++ b/drivers/s390/cio/vfio_ccw_drv.c
Petr Tesarik 44045a
@@ -14,7 +14,6 @@
Petr Tesarik 44045a
 #include <linux/init.h>
Petr Tesarik 44045a
 #include <linux/device.h>
Petr Tesarik 44045a
 #include <linux/slab.h>
Petr Tesarik 44045a
-#include <linux/uuid.h>
Petr Tesarik 44045a
 #include <linux/mdev.h>
Petr Tesarik 44045a
 
Petr Tesarik 44045a
 #include <asm/isc.h>
Petr Tesarik 44045a
@@ -344,8 +343,8 @@ static int vfio_ccw_chp_event(struct sub
Petr Tesarik 44045a
 		return 0;
Petr Tesarik 44045a
 
Petr Tesarik 44045a
 	trace_vfio_ccw_chp_event(private->sch->schid, mask, event);
Petr Tesarik 44045a
-	VFIO_CCW_MSG_EVENT(2, "%pUl (%x.%x.%04x): mask=0x%x event=%d\n",
Petr Tesarik 44045a
-			   mdev_uuid(private->mdev), sch->schid.cssid,
Petr Tesarik 44045a
+	VFIO_CCW_MSG_EVENT(2, "sch %x.%x.%04x: mask=0x%x event=%d\n",
Petr Tesarik 44045a
+			   sch->schid.cssid,
Petr Tesarik 44045a
 			   sch->schid.ssid, sch->schid.sch_no,
Petr Tesarik 44045a
 			   mask, event);
Petr Tesarik 44045a
 
Petr Tesarik 44045a
--- a/drivers/s390/cio/vfio_ccw_fsm.c
Petr Tesarik 44045a
+++ b/drivers/s390/cio/vfio_ccw_fsm.c
Petr Tesarik 44045a
@@ -256,8 +256,8 @@ static void fsm_io_request(struct vfio_c
Petr Tesarik 44045a
 		if (orb->tm.b) {
Petr Tesarik 44045a
 			io_region->ret_code = -EOPNOTSUPP;
Petr Tesarik 44045a
 			VFIO_CCW_MSG_EVENT(2,
Petr Tesarik 44045a
-					   "%pUl (%x.%x.%04x): transport mode\n",
Petr Tesarik 44045a
-					   mdev_uuid(mdev), schid.cssid,
Petr Tesarik 44045a
+					   "sch %x.%x.%04x: transport mode\n",
Petr Tesarik 44045a
+					   schid.cssid,
Petr Tesarik 44045a
 					   schid.ssid, schid.sch_no);
Petr Tesarik 44045a
 			errstr = "transport mode";
Petr Tesarik 44045a
 			goto err_out;
Petr Tesarik 44045a
@@ -266,8 +266,8 @@ static void fsm_io_request(struct vfio_c
Petr Tesarik 44045a
 					      orb);
Petr Tesarik 44045a
 		if (io_region->ret_code) {
Petr Tesarik 44045a
 			VFIO_CCW_MSG_EVENT(2,
Petr Tesarik 44045a
-					   "%pUl (%x.%x.%04x): cp_init=%d\n",
Petr Tesarik 44045a
-					   mdev_uuid(mdev), schid.cssid,
Petr Tesarik 44045a
+					   "sch %x.%x.%04x: cp_init=%d\n",
Petr Tesarik 44045a
+					   schid.cssid,
Petr Tesarik 44045a
 					   schid.ssid, schid.sch_no,
Petr Tesarik 44045a
 					   io_region->ret_code);
Petr Tesarik 44045a
 			errstr = "cp init";
Petr Tesarik 44045a
@@ -277,8 +277,8 @@ static void fsm_io_request(struct vfio_c
Petr Tesarik 44045a
 		io_region->ret_code = cp_prefetch(&private->cp);
Petr Tesarik 44045a
 		if (io_region->ret_code) {
Petr Tesarik 44045a
 			VFIO_CCW_MSG_EVENT(2,
Petr Tesarik 44045a
-					   "%pUl (%x.%x.%04x): cp_prefetch=%d\n",
Petr Tesarik 44045a
-					   mdev_uuid(mdev), schid.cssid,
Petr Tesarik 44045a
+					   "sch %x.%x.%04x: cp_prefetch=%d\n",
Petr Tesarik 44045a
+					   schid.cssid,
Petr Tesarik 44045a
 					   schid.ssid, schid.sch_no,
Petr Tesarik 44045a
 					   io_region->ret_code);
Petr Tesarik 44045a
 			errstr = "cp prefetch";
Petr Tesarik 44045a
@@ -290,8 +290,8 @@ static void fsm_io_request(struct vfio_c
Petr Tesarik 44045a
 		io_region->ret_code = fsm_io_helper(private);
Petr Tesarik 44045a
 		if (io_region->ret_code) {
Petr Tesarik 44045a
 			VFIO_CCW_MSG_EVENT(2,
Petr Tesarik 44045a
-					   "%pUl (%x.%x.%04x): fsm_io_helper=%d\n",
Petr Tesarik 44045a
-					   mdev_uuid(mdev), schid.cssid,
Petr Tesarik 44045a
+					   "sch %x.%x.%04x: fsm_io_helper=%d\n",
Petr Tesarik 44045a
+					   schid.cssid,
Petr Tesarik 44045a
 					   schid.ssid, schid.sch_no,
Petr Tesarik 44045a
 					   io_region->ret_code);
Petr Tesarik 44045a
 			errstr = "cp fsm_io_helper";
Petr Tesarik 44045a
@@ -301,16 +301,16 @@ static void fsm_io_request(struct vfio_c
Petr Tesarik 44045a
 		return;
Petr Tesarik 44045a
 	} else if (scsw->cmd.fctl & SCSW_FCTL_HALT_FUNC) {
Petr Tesarik 44045a
 		VFIO_CCW_MSG_EVENT(2,
Petr Tesarik 44045a
-				   "%pUl (%x.%x.%04x): halt on io_region\n",
Petr Tesarik 44045a
-				   mdev_uuid(mdev), schid.cssid,
Petr Tesarik 44045a
+				   "sch %x.%x.%04x: halt on io_region\n",
Petr Tesarik 44045a
+				   schid.cssid,
Petr Tesarik 44045a
 				   schid.ssid, schid.sch_no);
Petr Tesarik 44045a
 		/* halt is handled via the async cmd region */
Petr Tesarik 44045a
 		io_region->ret_code = -EOPNOTSUPP;
Petr Tesarik 44045a
 		goto err_out;
Petr Tesarik 44045a
 	} else if (scsw->cmd.fctl & SCSW_FCTL_CLEAR_FUNC) {
Petr Tesarik 44045a
 		VFIO_CCW_MSG_EVENT(2,
Petr Tesarik 44045a
-				   "%pUl (%x.%x.%04x): clear on io_region\n",
Petr Tesarik 44045a
-				   mdev_uuid(mdev), schid.cssid,
Petr Tesarik 44045a
+				   "sch %x.%x.%04x: clear on io_region\n",
Petr Tesarik 44045a
+				   schid.cssid,
Petr Tesarik 44045a
 				   schid.ssid, schid.sch_no);
Petr Tesarik 44045a
 		/* clear is handled via the async cmd region */
Petr Tesarik 44045a
 		io_region->ret_code = -EOPNOTSUPP;
Petr Tesarik 44045a
--- a/drivers/s390/cio/vfio_ccw_ops.c
Petr Tesarik 44045a
+++ b/drivers/s390/cio/vfio_ccw_ops.c
Petr Tesarik 44045a
@@ -127,8 +127,8 @@ static int vfio_ccw_mdev_create(struct m
Petr Tesarik 44045a
 	private->mdev = mdev;
Petr Tesarik 44045a
 	private->state = VFIO_CCW_STATE_IDLE;
Petr Tesarik 44045a
 
Petr Tesarik 44045a
-	VFIO_CCW_MSG_EVENT(2, "mdev %pUl, sch %x.%x.%04x: create\n",
Petr Tesarik 44045a
-			   mdev_uuid(mdev), private->sch->schid.cssid,
Petr Tesarik 44045a
+	VFIO_CCW_MSG_EVENT(2, "sch %x.%x.%04x: create\n",
Petr Tesarik 44045a
+			   private->sch->schid.cssid,
Petr Tesarik 44045a
 			   private->sch->schid.ssid,
Petr Tesarik 44045a
 			   private->sch->schid.sch_no);
Petr Tesarik 44045a
 
Petr Tesarik 44045a
@@ -140,8 +140,8 @@ static int vfio_ccw_mdev_remove(struct m
Petr Tesarik 44045a
 	struct vfio_ccw_private *private =
Petr Tesarik 44045a
 		dev_get_drvdata(mdev_parent_dev(mdev));
Petr Tesarik 44045a
 
Petr Tesarik 44045a
-	VFIO_CCW_MSG_EVENT(2, "mdev %pUl, sch %x.%x.%04x: remove\n",
Petr Tesarik 44045a
-			   mdev_uuid(mdev), private->sch->schid.cssid,
Petr Tesarik 44045a
+	VFIO_CCW_MSG_EVENT(2, "sch %x.%x.%04x: remove\n",
Petr Tesarik 44045a
+			   private->sch->schid.cssid,
Petr Tesarik 44045a
 			   private->sch->schid.ssid,
Petr Tesarik 44045a
 			   private->sch->schid.sch_no);
Petr Tesarik 44045a
 
Petr Tesarik 44045a
--- a/include/linux/mdev.h
Petr Tesarik 44045a
+++ b/include/linux/mdev.h
Petr Tesarik 44045a
@@ -166,11 +166,6 @@ static inline void mdev_set_drvdata(stru
Petr Tesarik 44045a
 {
Petr Tesarik 44045a
 	mdev->driver_data = data;
Petr Tesarik 44045a
 }
Petr Tesarik 44045a
-static inline const guid_t *mdev_uuid(struct mdev_device *mdev)
Petr Tesarik 44045a
-{
Petr Tesarik 44045a
-	return &mdev->uuid;
Petr Tesarik 44045a
-}
Petr Tesarik 44045a
-
Petr Tesarik 44045a
 extern struct bus_type mdev_bus_type;
Petr Tesarik 44045a
 
Petr Tesarik 44045a
 int mdev_register_device(struct device *dev, const struct mdev_parent_ops *ops);