diff options
author | Tyler Hicks <tyhicks@linux.vnet.ibm.com> | 2011-03-09 11:49:13 -0600 |
---|---|---|
committer | AK <andi@firstfloor.org> | 2011-03-31 11:58:50 -0700 |
commit | d28a97ca224292508122da0cb92a321cc8b5bb4f (patch) | |
tree | 06adaf46bcad96e1bf90ce7d1e97e7fe9dbffc5a | |
parent | 5d61725bfd063c59dca2d72edacfe1e217efc457 (diff) |
eCryptfs: Unlock page in write_begin error path
commit 50f198ae16ac66508d4b8d5a40967a8507ad19ee upstream.
Unlock the page in error path of ecryptfs_write_begin(). This may
happen, for example, if decryption fails while bring the page
up-to-date.
Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
-rw-r--r-- | fs/ecryptfs/mmap.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/ecryptfs/mmap.c b/fs/ecryptfs/mmap.c index b1d82756544b..b530d9cd5bf0 100644 --- a/fs/ecryptfs/mmap.c +++ b/fs/ecryptfs/mmap.c @@ -368,6 +368,11 @@ static int ecryptfs_write_begin(struct file *file, && (pos != 0)) zero_user(page, 0, PAGE_CACHE_SIZE); out: + if (unlikely(rc)) { + unlock_page(page); + page_cache_release(page); + *pagep = NULL; + } return rc; } |