diff options
author | Tyler Hicks <tyhicks@linux.vnet.ibm.com> | 2011-03-09 12:49:13 -0500 |
---|---|---|
committer | Tyler Hicks <tyhicks@linux.vnet.ibm.com> | 2011-03-28 02:47:46 -0400 |
commit | 50f198ae16ac66508d4b8d5a40967a8507ad19ee (patch) | |
tree | cfd582a98eca9b93177fe6e417b82e7c4e345f45 /fs/ecryptfs | |
parent | 57db4e8d73ef2b5e94a3f412108dff2576670a8a (diff) |
eCryptfs: Unlock page in write_begin error path
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.
Cc: <stable@kernel.org>
Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
Diffstat (limited to 'fs/ecryptfs')
-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 5e150131eb9d..6a44148c5fb9 100644 --- a/fs/ecryptfs/mmap.c +++ b/fs/ecryptfs/mmap.c | |||
@@ -381,6 +381,11 @@ static int ecryptfs_write_begin(struct file *file, | |||
381 | && (pos != 0)) | 381 | && (pos != 0)) |
382 | zero_user(page, 0, PAGE_CACHE_SIZE); | 382 | zero_user(page, 0, PAGE_CACHE_SIZE); |
383 | out: | 383 | out: |
384 | if (unlikely(rc)) { | ||
385 | unlock_page(page); | ||
386 | page_cache_release(page); | ||
387 | *pagep = NULL; | ||
388 | } | ||
384 | return rc; | 389 | return rc; |
385 | } | 390 | } |
386 | 391 | ||