entry = devm_kzalloc(&pdev->dev, sizeof(*entry), GFP_KERNEL);
                if (!entry) {
                        ret = -ENOMEM;
+                       of_node_put(node);
                        goto unwind_interfaces;
                }
 
                spin_lock_init(&entry->lock);
 
                ret = of_property_read_string(node, "qcom,entry-name", &entry->name);
-               if (ret < 0)
+               if (ret < 0) {
+                       of_node_put(node);
                        goto unwind_interfaces;
+               }
 
                if (of_property_read_bool(node, "interrupt-controller")) {
                        ret = qcom_smp2p_inbound_entry(smp2p, entry, node);
-                       if (ret < 0)
+                       if (ret < 0) {
+                               of_node_put(node);
                                goto unwind_interfaces;
+                       }
 
                        list_add(&entry->node, &smp2p->inbound);
                } else  {
                        ret = qcom_smp2p_outbound_entry(smp2p, entry, node);
-                       if (ret < 0)
+                       if (ret < 0) {
+                               of_node_put(node);
                                goto unwind_interfaces;
+                       }
 
                        list_add(&entry->node, &smp2p->outbound);
                }