From: Thomas Koeller Date: Tue, 10 Jan 2006 04:53:48 +0000 (-0800) Subject: [PATCH] non-linear frame buffer read/write access X-Git-Tag: v2.6.16-rc1~514 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cae8a12f49972f040bae6707b7707cd93fe9c9ab;p=linux-2.6 [PATCH] non-linear frame buffer read/write access While the code in fbmem.c allows for hooking read/write access to non-linear frame buffers by means of fb_read and fb_write in struct fb_ops, I could not find a way tho access the actual frame buffer memory from within these routines. I therefore had to patch fbmem.c, to be able to retrieve a pointer to struct fb_info from the 'file' argument to these functions. The second hunk of the patch is not strictly required, I only did that for symmetry reasons (and the code is somewhat shorter). Signed-off-by: Thomas Koeller Acked-by: "Antonino A. Daplas" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index 83e2594131..32a9b69bec 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c @@ -1234,6 +1234,7 @@ fb_open(struct inode *inode, struct file *file) return -ENODEV; if (!try_module_get(info->fbops->owner)) return -ENODEV; + file->private_data = info; if (info->fbops->fb_open) { res = info->fbops->fb_open(info,1); if (res) @@ -1245,11 +1246,9 @@ fb_open(struct inode *inode, struct file *file) static int fb_release(struct inode *inode, struct file *file) { - int fbidx = iminor(inode); - struct fb_info *info; + struct fb_info * const info = file->private_data; lock_kernel(); - info = registered_fb[fbidx]; if (info->fbops->fb_release) info->fbops->fb_release(info,1); module_put(info->fbops->owner);