if (smsdvb_debugfs_create(client) < 0)
                pr_info("failed to create debugfs node\n");
 
-       dvb_create_media_graph(&client->adapter);
+       rc = dvb_create_media_graph(&client->adapter);
+       if (rc < 0) {
+               pr_err("dvb_create_media_graph failed %d\n", rc);
+               goto client_error;
+       }
 
        pr_info("DVB interface registered.\n");
        return 0;
 
 void dvb_unregister_device(struct dvb_device *dvbdev);
 
 #ifdef CONFIG_MEDIA_CONTROLLER_DVB
-int dvb_create_media_graph(struct dvb_adapter *adap);
+__must_check int dvb_create_media_graph(struct dvb_adapter *adap);
 static inline void dvb_register_media_controller(struct dvb_adapter *adap,
                                                 struct media_device *mdev)
 {
 
        dvb->start_count = 0;
        dvb->stop_count = 0;
 
-#ifdef CONFIG_MEDIA_CONTROLLER_DVB
-       dvb_create_media_graph(&dvb->adapter);
-#endif
+       result = dvb_create_media_graph(&dvb->adapter);
+       if (result < 0)
+               goto fail_create_graph;
 
        return 0;
 
+fail_create_graph:
+       dvb_net_release(&dvb->net);
 fail_fe_conn:
        dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem);
 fail_fe_mem:
 
 
        /* register network adapter */
        dvb_net_init(&dvb->adapter, &dvb->net, &dvb->demux.dmx);
-       dvb_create_media_graph(&dvb->adapter);
+       result = dvb_create_media_graph(&dvb->adapter);
+       if (result < 0)
+               goto fail_create_graph;
 
        return 0;
 
+fail_create_graph:
+       dvb_net_release(&dvb->net);
 fail_fe_conn:
        dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem);
 fail_fe_mem:
 
                }
        }
 
-       dvb_create_media_graph(&adap->dvb_adap);
+       ret = dvb_create_media_graph(&adap->dvb_adap);
+       if (ret < 0)
+               goto err_dvb_unregister_frontend;
 
        return 0;
 
 
 
                adap->num_frontends_initialized++;
        }
+       if (ret)
+               return ret;
 
-       dvb_create_media_graph(&adap->dvb_adap);
+       ret = dvb_create_media_graph(&adap->dvb_adap);
 
-       return 0;
+       return ret;
 }
 
 int dvb_usb_adapter_frontend_exit(struct dvb_usb_adapter *adap)