When there is no output port, coresight_alloc_conns() still do the following
copy connection information to pdata->conns, and this may cause kernel panic.
Let's fix it.

Signed-off-by: Qi Liu <liuqi...@huawei.com>
---
 drivers/hwtracing/coresight/coresight-platform.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/hwtracing/coresight/coresight-platform.c 
b/drivers/hwtracing/coresight/coresight-platform.c
index bfd4423..cdc8824 100644
--- a/drivers/hwtracing/coresight/coresight-platform.c
+++ b/drivers/hwtracing/coresight/coresight-platform.c
@@ -26,12 +26,13 @@
 static int coresight_alloc_conns(struct device *dev,
                                 struct coresight_platform_data *pdata)
 {
-       if (pdata->nr_outport) {
-               pdata->conns = devm_kcalloc(dev, pdata->nr_outport,
-                                           sizeof(*pdata->conns), GFP_KERNEL);
-               if (!pdata->conns)
-                       return -ENOMEM;
-       }
+       if (!pdata->nr_outport)
+               return -ENOMEM;
+
+       pdata->conns = devm_kcalloc(dev, pdata->nr_outport,
+                                   sizeof(*pdata->conns), GFP_KERNEL);
+       if (!pdata->conns)
+               return -ENOMEM;

        return 0;
 }
--
2.8.1

Reply via email to