43 lines
1.6 KiB
Diff
43 lines
1.6 KiB
Diff
From 9fe79d7600497ed8a95c3981cbe5b73ab98222f0 Mon Sep 17 00:00:00 2001
|
|
From: Tyler Hicks <tyhicks@canonical.com>
|
|
Date: Tue, 12 Jun 2012 11:17:01 -0700
|
|
Subject: eCryptfs: Properly check for O_RDONLY flag before doing privileged open
|
|
|
|
From: Tyler Hicks <tyhicks@canonical.com>
|
|
|
|
commit 9fe79d7600497ed8a95c3981cbe5b73ab98222f0 upstream.
|
|
|
|
If the first attempt at opening the lower file read/write fails,
|
|
eCryptfs will retry using a privileged kthread. However, the privileged
|
|
retry should not happen if the lower file's inode is read-only because a
|
|
read/write open will still be unsuccessful.
|
|
|
|
The check for determining if the open should be retried was intended to
|
|
be based on the access mode of the lower file's open flags being
|
|
O_RDONLY, but the check was incorrectly performed. This would cause the
|
|
open to be retried by the privileged kthread, resulting in a second
|
|
failed open of the lower file. This patch corrects the check to
|
|
determine if the open request should be handled by the privileged
|
|
kthread.
|
|
|
|
Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
|
|
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
|
|
Acked-by: Dan Carpenter <dan.carpenter@oracle.com>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
|
|
---
|
|
fs/ecryptfs/kthread.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
--- a/fs/ecryptfs/kthread.c
|
|
+++ b/fs/ecryptfs/kthread.c
|
|
@@ -149,7 +149,7 @@ int ecryptfs_privileged_open(struct file
|
|
(*lower_file) = dentry_open(lower_dentry, lower_mnt, flags, cred);
|
|
if (!IS_ERR(*lower_file))
|
|
goto out;
|
|
- if (flags & O_RDONLY) {
|
|
+ if ((flags & O_ACCMODE) == O_RDONLY) {
|
|
rc = PTR_ERR((*lower_file));
|
|
goto out;
|
|
}
|