lkml.org 
[lkml]   [2012]   [Aug]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: Oops in audit_copy_inode
    From
    Date
    Hi Peter,

    Thanks for the report.

    Here's a patch. I haven't tested it but I'm pretty confident that it
    fixes the bug.

    Thanks,
    Miklos


    Subject: vfs: fix audit_inode on negative dentry
    From: Miklos Szeredi <mszeredi@suse.cz>

    Peter Moody reported an oops in audit_copy_inode() and bisected it to commit
    7157486541 (vfs: do_last(): common slow lookup).

    The problem is that audit_inode() in do_last() is called with a negative dentry.

    Previously the non-O_CREAT case didn't call audit_inode() here, but now both
    O_CREAT and non-O_CREAT opens are handled by the same code.

    I really have no idea why this audit_inode() is needed here at all but am afaid
    to remove this for fear of breaking audit somehow. So just fix this case by
    checking for a negative dentry.

    Reported-by: Peter Moody <pmoody@google.com>
    Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
    CC: stable@vger.kernel.org
    ---
    fs/namei.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    Index: linux-2.6/fs/namei.c
    ===================================================================
    --- linux-2.6.orig/fs/namei.c 2012-08-01 17:47:28.000000000 +0200
    +++ linux-2.6/fs/namei.c 2012-08-01 17:49:26.000000000 +0200
    @@ -2607,10 +2607,12 @@ static int do_last(struct nameidata *nd,
    goto finish_open_created;
    }

    - /*
    - * It already exists.
    - */
    - audit_inode(pathname, path->dentry);
    + if (path->dentry->d_inode) {
    + /*
    + * It already exists.
    + */
    + audit_inode(pathname, path->dentry);
    + }

    /*
    * If atomic_open() acquired write access it is dropped now due to



    \
     
     \ /
      Last update: 2012-08-01 19:01    [W:0.026 / U:29.624 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site