eCryptfs: Gracefully refuse miscdev file ops on inherited/passed files
authorTyler Hicks <tyhicks@canonical.com>
Mon, 11 Jun 2012 16:24:11 +0000 (09:24 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 25 Jul 2012 03:11:43 +0000 (04:11 +0100)
commit4d5a83a81b462742fca6e592b4841f52dc68ec83
tree5501c42194751908f42aed09509992008a746c34
parent391493aea95c02174396051e5ed3296325c131ee
eCryptfs: Gracefully refuse miscdev file ops on inherited/passed files

commit 8dc6780587c99286c0d3de747a2946a76989414a upstream.

File operations on /dev/ecryptfs would BUG() when the operations were
performed by processes other than the process that originally opened the
file. This could happen with open files inherited after fork() or file
descriptors passed through IPC mechanisms. Rather than calling BUG(), an
error code can be safely returned in most situations.

In ecryptfs_miscdev_release(), eCryptfs still needs to handle the
release even if the last file reference is being held by a process that
didn't originally open the file. ecryptfs_find_daemon_by_euid() will not
be successful, so a pointer to the daemon is stored in the file's
private_data. The private_data pointer is initialized when the miscdev
file is opened and only used when the file is released.

https://launchpad.net/bugs/994247

Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
Reported-by: Sasha Levin <levinsasha928@gmail.com>
Tested-by: Sasha Levin <levinsasha928@gmail.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
fs/ecryptfs/miscdev.c