Commit 395747af authored by Andi Kleen's avatar Andi Kleen Committed by Linus Torvalds

[PATCH] Add compat_ioctl to frame buffer layer

Forward compat_ioctl through the frame buffer layer.
Signed-off-by: default avatarAndi Kleen <ak@muc.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent e7c29199
...@@ -868,6 +868,23 @@ fb_ioctl(struct inode *inode, struct file *file, unsigned int cmd, ...@@ -868,6 +868,23 @@ fb_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
} }
} }
#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 static int
fb_mmap(struct file *file, struct vm_area_struct * vma) fb_mmap(struct file *file, struct vm_area_struct * vma)
{ {
...@@ -1009,6 +1026,9 @@ static struct file_operations fb_fops = { ...@@ -1009,6 +1026,9 @@ static struct file_operations fb_fops = {
.read = fb_read, .read = fb_read,
.write = fb_write, .write = fb_write,
.ioctl = fb_ioctl, .ioctl = fb_ioctl,
#ifdef CONFIG_COMPAT
.compat_ioctl = fb_compat_ioctl,
#endif
.mmap = fb_mmap, .mmap = fb_mmap,
.open = fb_open, .open = fb_open,
.release = fb_release, .release = fb_release,
......
...@@ -584,6 +584,10 @@ struct fb_ops { ...@@ -584,6 +584,10 @@ struct fb_ops {
int (*fb_ioctl)(struct inode *inode, struct file *file, unsigned int cmd, int (*fb_ioctl)(struct inode *inode, struct file *file, unsigned int cmd,
unsigned long arg, struct fb_info *info); 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 */ /* perform fb specific mmap */
int (*fb_mmap)(struct fb_info *info, struct file *file, struct vm_area_struct *vma); int (*fb_mmap)(struct fb_info *info, struct file *file, struct vm_area_struct *vma);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment