]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/ecryptfs/file.c
eCryptfs: do not try to open device files on mknod
[linux-2.6-omap-h63xx.git] / fs / ecryptfs / file.c
index f0be29051528024d375057cfb6f39fc43568878b..2c2d60df3f607e99abc81d3caf1579794f32e5e3 100644 (file)
@@ -199,6 +199,20 @@ static int ecryptfs_open(struct inode *inode, struct file *file)
                       "file must hence be opened RO\n", __func__);
                goto out;
        }
+       if (!ecryptfs_inode_to_private(inode)->lower_file) {
+               BUG_ON(!(crypt_stat->flags & ECRYPTFS_DELAY_PERSISTENT));
+               mutex_lock(&crypt_stat->cs_mutex);
+               crypt_stat->flags &= ~(ECRYPTFS_ENCRYPTED);
+               mutex_unlock(&crypt_stat->cs_mutex);
+               rc = ecryptfs_init_persistent_file(ecryptfs_dentry);
+               if (rc) {
+                       printk(KERN_ERR "%s: Error attempting to initialize "
+                              "the persistent file for the dentry with name "
+                              "[%s]; rc = [%d]\n", __func__,
+                              ecryptfs_dentry->d_name.name, rc);
+                       goto out;
+               }
+       }
        ecryptfs_set_file_lower(
                file, ecryptfs_inode_to_private(inode)->lower_file);
        if (S_ISDIR(ecryptfs_dentry->d_inode->i_mode)) {