***************
*** 1064,1075 ****
  	.release	= dvb_frontend_release
  };
  
- int
- dvb_register_frontend (int (*ioctl) (struct dvb_frontend *frontend,
- 				     unsigned int cmd, void *arg),
- 		       struct dvb_i2c_bus *i2c,
- 		       void *data,
- 		       struct dvb_frontend_info *info)
  {
  	struct list_head *entry;
  	struct dvb_frontend_data *fe;
--- 1064,1074 ----
  	.release	= dvb_frontend_release
  };
  
+ int dvb_register_frontend(int (*ioctl) (struct dvb_frontend *frontend,
+ 					unsigned int cmd, void *arg),
+ 			  struct dvb_i2c_bus *i2c,
+ 			  void *data,
+ 			  struct dvb_frontend_info *info)
  {
  	struct list_head *entry;
  	struct dvb_frontend_data *fe;
***************
*** 1183,1198 ****
  	return -EINVAL;
  }
  
- int
- dvb_register_frontend_new (int (*ioctl) (struct dvb_frontend *frontend,
- 				     unsigned int cmd, void *arg),
- 		       struct dvb_adapter *dvb_adapter,
- 		       void *data,
- 		       struct dvb_frontend_info *info,
- 		       struct module *module)
  {
  	struct list_head *entry;
  	struct dvb_frontend_data *fe;
  	static const struct dvb_device dvbdev_template = {
  		.users = ~0,
  		.writers = 1,
--- 1182,1197 ----
  	return -EINVAL;
  }
  
+ int dvb_register_frontend_new (int (*ioctl) (struct dvb_frontend *frontend,
+ 					     unsigned int cmd, void *arg),
+ 			       struct i2c_adapter *i2c_adapter,
+ 			       void *data,
+ 			       struct dvb_frontend_info *info,
+ 			       struct module *module)
  {
  	struct list_head *entry;
  	struct dvb_frontend_data *fe;
+ 	struct dvb_adapter *dvb_adapter;
  	static const struct dvb_device dvbdev_template = {
  		.users = ~0,
  		.writers = 1,
***************
*** 1206,1211 ****
  	if (down_interruptible (&frontend_mutex))
  		return -ERESTARTSYS;
  
  	if (!(fe = kmalloc (sizeof (struct dvb_frontend_data), GFP_KERNEL))) {
  		up (&frontend_mutex);
  		return -ENOMEM;
--- 1205,1215 ----
  	if (down_interruptible (&frontend_mutex))
  		return -ERESTARTSYS;
  
+ 	if (!(dvb_adapter = find_dvb_adapter(i2c_adapter))) {
+ 		up (&frontend_mutex);
+ 		return -EFAULT;
+ 	}
+ 
  	if (!(fe = kmalloc (sizeof (struct dvb_frontend_data), GFP_KERNEL))) {
  		up (&frontend_mutex);
  		return -ENOMEM;
***************
*** 1275,1286 ****
  
  int dvb_unregister_frontend_new (int (*ioctl) (struct dvb_frontend *frontend,
  					   unsigned int cmd, void *arg),
- 			     struct dvb_adapter *dvb_adapter)
  {
  	struct list_head *entry, *n;
  
  	dprintk ("%s\n", __FUNCTION__);
  
  	down (&frontend_mutex);
  
  	list_for_each_safe (entry, n, &frontend_list) {
--- 1279,1295 ----
  
  int dvb_unregister_frontend_new (int (*ioctl) (struct dvb_frontend *frontend,
  					   unsigned int cmd, void *arg),
+ 				 struct i2c_adapter *i2c_adapter)
  {
+ 	struct dvb_adapter *dvb_adapter;
  	struct list_head *entry, *n;
  
  	dprintk ("%s\n", __FUNCTION__);
  
+ 	if (!(dvb_adapter = find_dvb_adapter(i2c_adapter))) {
+ 		return -EFAULT;
+ 	}
+ 
  	down (&frontend_mutex);
  
  	list_for_each_safe (entry, n, &frontend_list) {
