eCryptfs: Copy lower inode attrs before dentry instantiation
authorTyler Hicks <tyhicks@linux.vnet.ibm.com>
Thu, 12 Mar 2009 05:19:46 +0000 (00:19 -0500)
committerTyler Hicks <tyhicks@linux.vnet.ibm.com>
Wed, 22 Apr 2009 08:54:12 +0000 (03:54 -0500)
commit98dd17607a2ed147a488a21ac90944f6ea4c42df
treea81baed56b7384321cf3d282e2d41f785fe30853
parent1e0aeebdb5124157dd204ae4c92d732bfd7443c5
eCryptfs: Copy lower inode attrs before dentry instantiation

Copies the lower inode attributes to the upper inode before passing the
upper inode to d_instantiate().  This is important for
security_d_instantiate().

The problem was discovered by a user seeing SELinux denials like so:

type=AVC msg=audit(1236812817.898:47): avc:  denied  { 0x100000 } for
pid=3584 comm="httpd" name="testdir" dev=ecryptfs ino=943872
scontext=root:system_r:httpd_t:s0
tcontext=root:object_r:httpd_sys_content_t:s0 tclass=file

Notice target class is file while testdir is really a directory,
confusing the permission translation (0x100000) due to the wrong i_mode.

Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
fs/ecryptfs/main.c