linux/fs/ecryptfs
Tyler Hicks 1c28096ab9 eCryptfs: don't pass fs-specific ioctl commands through
commit 6d65261a09 upstream.

eCryptfs can't be aware of what to expect when after passing an
arbitrary ioctl command through to the lower filesystem. The ioctl
command may trigger an action in the lower filesystem that is
incompatible with eCryptfs.

One specific example is when one attempts to use the Btrfs clone
ioctl command when the source file is in the Btrfs filesystem that
eCryptfs is mounted on top of and the destination fd is from a new file
created in the eCryptfs mount. The ioctl syscall incorrectly returns
success because the command is passed down to Btrfs which thinks that it
was able to do the clone operation. However, the result is an empty
eCryptfs file.

This patch allows the trim, {g,s}etflags, and {g,s}etversion ioctl
commands through and then copies up the inode metadata from the lower
inode to the eCryptfs inode to catch any changes made to the lower
inode's metadata. Those five ioctl commands are mostly common across all
filesystems but the whitelist may need to be further pruned in the
future.

https://bugzilla.kernel.org/show_bug.cgi?id=93691
https://launchpad.net/bugs/1305335

Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
Cc: Rocko <rockorequin@hotmail.com>
Cc: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
History 2015-03-18 15:06:34 +00:00
..
crypto.c eCryptfs: Remove buggy and unnecessary write in file name decode routine 2015-01-15 10:44:18 +00:00
debug.c eCryptfs: update comment and debug statement 2007-10-16 09:43:11 -07:00
dentry.c ecryptfs: ->lower_path.dentry is never NULL 2013-10-24 23:34:48 -04:00
ecryptfs_kernel.h ecryptfs: get rid of ecryptfs_set_dentry_lower{,_mnt} 2013-10-24 23:34:48 -04:00
file.c eCryptfs: don't pass fs-specific ioctl commands through 2015-03-18 15:06:34 +00:00
inode.c ecryptfs: avoid to access NULL pointer when write metadata in xattr 2014-10-30 09:40:18 -07:00
Kconfig Minor code cleanups and new Kconfig option to disable /dev/ecryptfs 2013-03-07 12:47:24 -08:00
keystore.c ecryptfs: Fix memory leakage in keystore.c 2013-10-16 15:18:01 -07:00
kthread.c eCryptfs: fix to use list_for_each_entry_safe() when delete items 2012-12-18 10:07:29 -06:00
main.c eCryptfs: Force RO mount when encrypted view is enabled 2015-01-15 10:44:17 +00:00
Makefile eCryptfs: allow userspace messaging to be disabled 2013-03-03 23:59:59 -08:00
messaging.c eCryptfs: Cocci spatch "memdup.spatch" 2013-06-07 17:26:55 -07:00
miscdev.c ecryptfs: close rmmod race 2013-04-09 14:08:16 -04:00
mmap.c eCryptfs: Avoid unnecessary disk read and data decryption during writing 2012-11-07 17:56:16 -08:00
read_write.c ecryptfs: don't open-code kernel_read() 2013-05-09 13:39:58 -04:00
super.c mm + fs: store shadow entries in page cache 2014-04-03 16:21:01 -07:00