Add compat_ioctl to frame buffer layer
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.
Signed-off-by Andi Kleen <[email protected]>
drivers/video/fbmem.c renamed from drivers/video/fbmem.c-o +20 -0
@@ -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
@@ -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); };