eCryptfs: Make truncate path killable
authorTyler Hicks <tyhicks@canonical.com>
Thu, 19 Jan 2012 00:30:04 +0000 (18:30 -0600)
committerSimone Willett <swillett@nvidia.com>
Fri, 10 Feb 2012 02:20:03 +0000 (18:20 -0800)
commitab9cf2e9f3ddf639b56cec1edb2ec8d2563106a3
tree3f9b19d96fbd72087818e80370454309abea4343
parent0460bba0e4b2042a2bd5984a8e96e5bda706c4cd
eCryptfs: Make truncate path killable

commit 5e6f0d769017cc49207ef56996e42363ec26c1f0 upstream.

ecryptfs_write() handles the truncation of eCryptfs inodes. It grabs a
page, zeroes out the appropriate portions, and then encrypts the page
before writing it to the lower filesystem. It was unkillable and due to
the lack of sparse file support could result in tying up a large portion
of system resources, while encrypting pages of zeros, with no way for
the truncate operation to be stopped from userspace.

This patch adds the ability for ecryptfs_write() to detect a pending
fatal signal and return as gracefully as possible. The intent is to
leave the lower file in a useable state, while still allowing a user to
break out of the encryption loop. If a pending fatal signal is detected,
the eCryptfs inode size is updated to reflect the modified inode size
and then -EINTR is returned.

Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
Change-Id: I80e83c16c58586c700df081500b6c3e2a4a06270
Reviewed-on: http://git-master/r/79650
Reviewed-by: Automatic_Commit_Validation_User
fs/ecryptfs/read_write.c