lkml.org 
[lkml]   [2011]   [Feb]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[15/68] CRED: Fix kernel panic upon security_file_alloc() failure.
    2.6.32-longterm review patch.  If anyone has any objections, please let us know.

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

    From: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>

    commit 78d2978874e4e10e97dfd4fd79db45bdc0748550 upstream.

    In get_empty_filp() since 2.6.29, file_free(f) is called with f->f_cred == NULL
    when security_file_alloc() returned an error. As a result, kernel will panic()
    due to put_cred(NULL) call within RCU callback.

    Fix this bug by assigning f->f_cred before calling security_file_alloc().

    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    fs/file_table.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/fs/file_table.c
    +++ b/fs/file_table.c
    @@ -121,13 +121,13 @@ struct file *get_empty_filp(void)
    goto fail;

    percpu_counter_inc(&nr_files);
    + f->f_cred = get_cred(cred);
    if (security_file_alloc(f))
    goto fail_sec;

    INIT_LIST_HEAD(&f->f_u.fu_list);
    atomic_long_set(&f->f_count, 1);
    rwlock_init(&f->f_owner.lock);
    - f->f_cred = get_cred(cred);
    spin_lock_init(&f->f_lock);
    eventpoll_init_file(f);
    /* f->f_version: 0 */



    \
     
     \ /
      Last update: 2011-02-28 17:53    [W:0.019 / U:0.776 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site