link->local_id = fwep.id;
        link->local_port = fwep.port;
        link->local_node = fwnode_graph_get_port_parent(fwnode);
+       if (!link->local_node)
+               return -ENOLINK;
 
        fwnode = fwnode_graph_get_remote_endpoint(fwnode);
-       if (!fwnode) {
-               fwnode_handle_put(fwnode);
-               return -ENOLINK;
-       }
+       if (!fwnode)
+               goto err_put_local_node;
 
        fwnode_graph_parse_endpoint(fwnode, &fwep);
        link->remote_id = fwep.id;
        link->remote_port = fwep.port;
        link->remote_node = fwnode_graph_get_port_parent(fwnode);
+       if (!link->remote_node)
+               goto err_put_remote_endpoint;
 
        return 0;
+
+err_put_remote_endpoint:
+       fwnode_handle_put(fwnode);
+
+err_put_local_node:
+       fwnode_handle_put(link->local_node);
+
+       return -ENOLINK;
 }
 EXPORT_SYMBOL_GPL(v4l2_fwnode_parse_link);