coresight: Cleanup coresight_remove_conns
authorSuzuki K Poulose <suzuki.poulose@arm.com>
Wed, 19 Jun 2019 19:52:58 +0000 (13:52 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 20 Jun 2019 05:56:12 +0000 (07:56 +0200)
When a device is unregistered, we remove all connection
references to it, by searching the connection records of
all devices in the coresight bus, via coresight_remove_conns.
We could avoid searching if this device doesn't have an input
port (e.g, a source). Also document the purpose of the function.

Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hwtracing/coresight/coresight.c

index 04b5d3c2bb3a03b817e869ed5a9773e30e28d3db..068bd2fc09857e0495624cf1378715f82d1bceb4 100644 (file)
@@ -1096,10 +1096,21 @@ static int coresight_remove_match(struct device *dev, void *data)
        return 0;
 }
 
+/*
+ * coresight_remove_conns - Remove references to this given devices
+ * from the connections of other devices.
+ */
 static void coresight_remove_conns(struct coresight_device *csdev)
 {
-       bus_for_each_dev(&coresight_bustype, NULL,
-                        csdev, coresight_remove_match);
+       /*
+        * Another device will point to this device only if there is
+        * an output port connected to this one. i.e, if the device
+        * doesn't have at least one input port, there is no point
+        * in searching all the devices.
+        */
+       if (csdev->nr_inport)
+               bus_for_each_dev(&coresight_bustype, NULL,
+                                csdev, coresight_remove_match);
 }
 
 /**