Skip to contentSkip to conversation

Add compat_ioctl to frame buffer layer

PATCH New Andi Kleen 1 participant 1 message Jan 18, 2005 Framebuffer layer

lore
Share & tools
lore

Andi Kleen

author
#0 lore raw

PATCH 1/1 Add compat_ioctl to frame buffer layer

Forward compat_ioctl through the frame buffer layer.

This is needed for a followup patch.

drivers/video/fbmem.c renamed from drivers/video/fbmem.c-o +20 -0
diff -u linux-2.6.11-rc1-bk4/drivers/video/fbmem.c-o linux-2.6.11-rc1-bk4/drivers/video/fbmem.c
@@ -868,6 +868,23 @@
 	}
 }
 
+#ifdef CONFIG_COMPAT
+static long
+fb_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+{
+	int fbidx = iminor(file->f_dentry->d_inode);
+	struct fb_info *info = registered_fb[fbidx];
+	struct fb_ops *fb = info->fbops;
+	int ret;
+	if (fb->fb_compat_ioctl == NULL)
+		return -ENOIOCTLCMD;
+	lock_kernel();
+	ret = fb->fb_compat_ioctl(file, cmd, arg, info);
+	unlock_kernel();
+	return ret;
+}
+#endif
+
 static int 
 fb_mmap(struct file *file, struct vm_area_struct * vma)
 {
@@ -1009,6 +1026,9 @@
 	.read =		fb_read,
 	.write =	fb_write,
 	.ioctl =	fb_ioctl,
+#ifdef CONFIG_COMPAT
+	.compat_ioctl = fb_compat_ioctl,
+#endif
 	.mmap =		fb_mmap,
 	.open =		fb_open,
 	.release =	fb_release,
include/linux/fb.h renamed from include/linux/fb.h-o +4 -0
diff -u linux-2.6.11-rc1-bk4/include/linux/fb.h-o linux-2.6.11-rc1-bk4/include/linux/fb.h
@@ -584,6 +584,10 @@
 	int (*fb_ioctl)(struct inode *inode, struct file *file, unsigned int cmd,
 			unsigned long arg, struct fb_info *info);
 
+	/* Handle 32bit compat ioctl (optional) */
+	int (*fb_compat_ioctl)(struct file *f, unsigned cmd, unsigned long arg,
+			       struct fb_info *info);
+
 	/* perform fb specific mmap */
 	int (*fb_mmap)(struct fb_info *info, struct file *file, struct vm_area_struct *vma);
 };