diff -ruN sasc-ng.orig/contrib/sasc-ng/dvbloopback/module/dvblb_forward.c sasc-ng.new/contrib/sasc-ng/dvbloopback/module/dvblb_forward.c
--- sasc-ng.orig/contrib/sasc-ng/dvbloopback/module/dvblb_forward.c	2011-03-12 00:59:51.000000000 +0100
+++ sasc-ng.new/contrib/sasc-ng/dvbloopback/module/dvblb_forward.c	2011-03-12 01:05:57.176640647 +0100
@@ -166,9 +166,9 @@
 	struct file *ftmp = find_forwardmap(lbdev, f->private_data);
 	if (!ftmp || IS_ERR(ftmp))
 		return -EFAULT;
-	if (lbdev->forward_dev->fops &&lbdev->forward_dev->fops->ioctl)
-		return lbdev->forward_dev->fops->ioctl(
-		           ftmp->f_dentry->d_inode, ftmp, cmd, arg);
+	if (lbdev->forward_dev->fops &&lbdev->forward_dev->fops->compat_ioctl)
+		// return lbdev->forward_dev->fops->compat_ioctl(ftmp->f_dentry->d_inode, ftmp, cmd, arg);
+		return lbdev->forward_dev->fops->compat_ioctl(ftmp, cmd, arg);
 	return -EFAULT;
 }
 
diff -ruN sasc-ng.orig/contrib/sasc-ng/dvbloopback/module/dvb_loopback.c sasc-ng.new/contrib/sasc-ng/dvbloopback/module/dvb_loopback.c
--- sasc-ng.orig/contrib/sasc-ng/dvbloopback/module/dvb_loopback.c	2011-03-12 00:59:51.000000000 +0100
+++ sasc-ng.new/contrib/sasc-ng/dvbloopback/module/dvb_loopback.c	2011-03-12 01:05:57.177640733 +0100
@@ -118,10 +118,8 @@
 /* This is a copy of dvb_usercopy.  We need to do this because it isn't exported
    by dvbdev
 */
-static int dvblb_usercopy(struct inode *inode, struct file *file,
-		     unsigned int cmd, unsigned long arg,
-		     int (*func)(struct inode *inode, struct file *file,
-		     unsigned int cmd, void *arg))
+//static int dvblb_usercopy(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg, int (*func)(struct inode *inode, struct file *file, unsigned int cmd, void *arg))
+  static int dvblb_usercopy(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg, int (*func)(struct file *file, unsigned int cmd, void *arg))
 {
 	char    sbuf[128];
 	void    *mbuf = NULL;
@@ -180,7 +178,8 @@
 	}
 
 	/* call driver */
-	if ((err = func(inode, file, cmd, parg)) == -ENOIOCTLCMD)
+	//if ((err = func(inode, file, cmd, parg)) == -ENOIOCTLCMD)
+	if ((err = func(file, cmd, parg)) == -ENOIOCTLCMD)
 		err = -EINVAL;
 
 	if (err < 0)
@@ -663,8 +662,8 @@
    dvb_generic_ioctl) which is called by dvblb_ioctl for device-0.  It is
    used to forward ioctl commands back to the userspace application
 */
-static int dvblb_looped_ioctl(struct inode *inode, struct file *f,
-	unsigned int cmd, void *parg)
+// static int dvblb_looped_ioctl(struct inode *inode, struct file *f, unsigned int cmd, void *parg)
+static int dvblb_looped_ioctl(struct file *f, unsigned int cmd, void *parg)
 {
 	int ret;
         struct dvb_device *dvbdev, **filemap;
@@ -692,9 +691,10 @@
 	return ret;
 }
 
-static int dvblb_ioctl(struct inode *inode, struct file *f,
-	unsigned int cmd, unsigned long arg)
-{
+//static int dvblb_ioctl(struct inode *inode, struct file *f, unsigned int cmd, unsigned long arg) {
+static long dvblb_ioctl(struct file *f, unsigned int cmd, unsigned long arg) {
+
+	struct inode *inode = f->f_path.dentry->d_inode;
 	void * parg = (void *)arg;
 	struct dvb_device *dvbdev, **filemap;
 	struct dvblb_devinfo *lbdev;
@@ -723,8 +723,8 @@
 		if (lbdev->forward_dev)
 			return dvblb_forward_ioctl(lbdev, f, cmd, arg);
 
-		return dvblb_usercopy (inode, f, cmd, arg,
-		                       dvbdev->kernel_ioctl);
+		// return dvblb_usercopy (inode, f, cmd, arg, dvbdev->kernel_ioctl);
+		return dvblb_usercopy (inode, f, cmd, arg, dvbdev->kernel_ioctl);
 	}
 	/* This is the userspace control device */
 	dprintk2("dvblb_ioctl %d%s%d fd:%d cmd:%x\n",lbdev->parent->adapter.num,
@@ -978,7 +978,8 @@
 	.write		= dvblb_write,
 	.poll		= dvblb_poll,
 	.mmap		= dvblb_mmap,
-	.ioctl		= dvblb_ioctl,
+	.compat_ioctl	= dvblb_ioctl,
+	.unlocked_ioctl	= dvblb_ioctl,
 };
 
 static struct dvb_device dvbdev_looped = {
@@ -998,7 +999,8 @@
 	.write		= dvblb_write,
 	.poll		= dvblb_poll,
 	.mmap		= dvblb_mmap,
-	.ioctl		= dvblb_ioctl,
+	.compat_ioctl	= dvblb_ioctl,
+	.unlocked_ioctl	= dvblb_ioctl,
 };
 
 static struct dvb_device dvbdev_userspace = {
@@ -1007,6 +1009,7 @@
         .readers = 1,
         .writers = 1,
 	.fops = &dvbdev_userspace_fops,
+	//.kernel_ioctl  = dvblb_looped_ioctl,
 	.kernel_ioctl  = dvblb_looped_ioctl,
 };
 
