lkml.org 
[lkml]   [2012]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 47/68] eCryptfs: Properly check for O_RDONLY flag before doing privileged open
    Date
    From: Greg KH <gregkh@linuxfoundation.org>

    3.0-stable review patch. If anyone has any objections, please let me know.

    ------------------

    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;
    }



    \
     
     \ /
      Last update: 2012-07-13 06:21    [W:4.163 / U:0.396 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site