/* add svc client device(s) */
        svc = devm_kzalloc(dev, sizeof(*svc), GFP_KERNEL);
-       if (!svc)
-               return -ENOMEM;
+       if (!svc) {
+               ret = -ENOMEM;
+               goto err_free_kfifo;
+       }
 
        svc->stratix10_svc_rsu = platform_device_alloc(STRATIX10_RSU, 0);
        if (!svc->stratix10_svc_rsu) {
                dev_err(dev, "failed to allocate %s device\n", STRATIX10_RSU);
-               return -ENOMEM;
+               ret = -ENOMEM;
+               goto err_free_kfifo;
        }
 
        ret = platform_device_add(svc->stratix10_svc_rsu);
-       if (ret) {
-               platform_device_put(svc->stratix10_svc_rsu);
-               return ret;
-       }
+       if (ret)
+               goto err_put_device;
+
        dev_set_drvdata(dev, svc);
 
        pr_info("Intel Service Layer Driver Initialized\n");
 
+       return 0;
+
+err_put_device:
+       platform_device_put(svc->stratix10_svc_rsu);
+err_free_kfifo:
+       kfifo_free(&controller->svc_fifo);
        return ret;
 }