On Wed, Aug 01, 2007 at 10:01:14PM +0900, Ryusuke Konishi wrote: > When ecryptfs_lookup() is called against special files, eCryptfs > generates the following errors because it tries to treat them like > regular eCryptfs files. > > Error opening lower file for lower_dentry [0xffff810233a6f150], lower_mnt > [0xffff810235bb4c80], and flags > [0x8000] > Error opening lower_file to read header region > Error attempting to read the [user.ecryptfs] xattr from the lower file; > return value = [-95] > Valid metadata not found in header region or xattr region; treating file as > unencrypted > > For instance, the problem can be reproduced by the steps below. > > # mkdir /root/crypt /mnt/crypt > # mount -t ecryptfs /root/crypt /mnt/crypt > # mknod /mnt/crypt/c0 c 0 0 > # umount /mnt/crypt > # mount -t ecryptfs /root/crypt /mnt/crypt > # ls -l /mnt/crypt > > This patch fixes it by adding a check similar to directories and > symlinks. > > Signed-off-by: Ryusuke Konishi <[EMAIL PROTECTED]>
Acked-by: Michael Halcrow <[EMAIL PROTECTED]> > --- > fs/ecryptfs/inode.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c > index 0a50942..131954b 100644 > --- a/fs/ecryptfs/inode.c > +++ b/fs/ecryptfs/inode.c > @@ -353,6 +353,10 @@ static struct dentry *ecryptfs_lookup(struct inode *dir, > struct dentry *dentry, > ecryptfs_printk(KERN_DEBUG, "Is a symlink; returning\n"); > goto out; > } > + if (special_file(lower_inode->i_mode)) { > + ecryptfs_printk(KERN_DEBUG, "Is a special file; returning\n"); > + goto out; > + } > if (!nd) { > ecryptfs_printk(KERN_DEBUG, "We have a NULL nd, just leave" > "as we *think* we are about to unlink\n"); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/