diff --git a/drivers/char/misc.c b/drivers/char/misc.c
index 92ab03d282945bfe804ee3b48d3d6f428e4d55b8..cd650ca8c679c102f135cb2a6d0d1bfb387e5bf7 100644
--- a/drivers/char/misc.c
+++ b/drivers/char/misc.c
@@ -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);