--- linux-3.5.0/fs/open.c 2013-02-11 17:53:13.000000000 +0400 +++ linux-3.5.0-ubuntu/fs/open.c 2013-02-11 17:28:13.628719490 +0400 @@ -831,8 +831,12 @@ struct file *nameidata_to_filp(struct na nd->intent.open.file = NULL; } else { struct file *res; + struct inode *inode = nd->path.dentry->d_inode; - res = vfs_open(&nd->path, filp, cred); + if (inode->i_op->open) + return inode->i_op->open(nd->path.dentry, filp, cred); + + res = do_dentry_open(&nd->path, filp, NULL, cred); if (!IS_ERR(res)) { int error;