drivers: misc: pass miscdevice pointer via file private data
authorSamu Onkalo <[email protected]>
Mon, 24 May 2010 21:33:10 +0000 (14:33 -0700)
committerLinus Torvalds <[email protected]>
Tue, 25 May 2010 15:07:03 +0000 (08:07 -0700)
For misc devices, inode->i_cdev doesn't point to the device drivers own
data.  Link between file operations and device driver internal data is
lost.  Pass pointer to misc device struct via file private data for driver
open function use.

Signed-off-by: Samu Onkalo <[email protected]>
Cc: Al Viro <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
drivers/char/misc.c

index 92ab03d282945bfe804ee3b48d3d6f428e4d55b8..cd650ca8c679c102f135cb2a6d0d1bfb387e5bf7 100644 (file)
@@ -144,6 +144,7 @@ static int misc_open(struct inode * inode, struct file * file)
        old_fops = file->f_op;
        file->f_op = new_fops;
        if (file->f_op->open) {
+               file->private_data = c;
                err=file->f_op->open(inode,file);
                if (err) {
                        fops_put(file->f_op);