drivers: misc: pass miscdevice pointer via file private data

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 <samu.p.onkalo@nokia.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Samu Onkalo 2010-05-24 14:33:10 -07:00 коммит произвёл Linus Torvalds
Родитель 6c5e303afd
Коммит fa1f68db6c
1 изменённых файлов: 1 добавлений и 0 удалений

Просмотреть файл

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