Fix registration reference of passthrough services

Test: on internal marlin with lshal
Change-Id: I1ce337ed5c7fe711ad499d687567919f6fd89788
diff --git a/transport/ServiceManagement.cpp b/transport/ServiceManagement.cpp
index 958b9bd..f3e1818 100644
--- a/transport/ServiceManagement.cpp
+++ b/transport/ServiceManagement.cpp
@@ -175,9 +175,13 @@
             return nullptr;
         }
 
-        registerReference(fqName, name);
+        IBase *interface = (*generator)(name);
 
-        return (*generator)(name);
+        if (interface != nullptr) {
+            registerReference(fqName, name);
+        }
+
+        return interface;
     }
 
     Return<bool> add(const hidl_vec<hidl_string>& /* interfaceChain */,