int nr_refcnts = 1;
        atomic_t *refcnts = NULL;
        struct coresight_device *csdev;
-       struct coresight_connection *conns;
+       struct coresight_connection *conns = NULL;
 
        csdev = kzalloc(sizeof(*csdev), GFP_KERNEL);
        if (!csdev) {
 
        csdev->nr_inport = desc->pdata->nr_inport;
        csdev->nr_outport = desc->pdata->nr_outport;
-       conns = kcalloc(csdev->nr_outport, sizeof(*conns), GFP_KERNEL);
-       if (!conns) {
-               ret = -ENOMEM;
-               goto err_kzalloc_conns;
-       }
 
-       for (i = 0; i < csdev->nr_outport; i++) {
-               conns[i].outport = desc->pdata->outports[i];
-               conns[i].child_name = desc->pdata->child_names[i];
-               conns[i].child_port = desc->pdata->child_ports[i];
+       /* Initialise connections if there is at least one outport */
+       if (csdev->nr_outport) {
+               conns = kcalloc(csdev->nr_outport, sizeof(*conns), GFP_KERNEL);
+               if (!conns) {
+                       ret = -ENOMEM;
+                       goto err_kzalloc_conns;
+               }
+
+               for (i = 0; i < csdev->nr_outport; i++) {
+                       conns[i].outport = desc->pdata->outports[i];
+                       conns[i].child_name = desc->pdata->child_names[i];
+                       conns[i].child_port = desc->pdata->child_ports[i];
+               }
        }
 
        csdev->conns = conns;