lkml.org 
[lkml]   [2009]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:core/urgent] signals: Fix more rcu assumptions
    Commit-ID:  7cf7db8df0b78076eafa4ead47559344ca7b7a43
    Gitweb: http://git.kernel.org/tip/7cf7db8df0b78076eafa4ead47559344ca7b7a43
    Author: Thomas Gleixner <tglx@linutronix.de>
    AuthorDate: Thu, 10 Dec 2009 00:53:21 +0000
    Committer: Thomas Gleixner <tglx@linutronix.de>
    CommitDate: Thu, 10 Dec 2009 23:04:11 +0100

    signals: Fix more rcu assumptions

    1) Remove the misleading comment in __sigqueue_alloc() which claims
    that holding a spinlock is equivalent to rcu_read_lock().

    2) Add a rcu_read_lock/unlock around the __task_cred() access
    in __sigqueue_alloc()

    This needs to be revisited to remove the remaining users of
    read_lock(&tasklist_lock) but that's outside the scope of this patch.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    LKML-Reference: <20091210004703.269843657@linutronix.de>
    ---
    kernel/signal.c | 8 ++++----
    1 files changed, 4 insertions(+), 4 deletions(-)

    diff --git a/kernel/signal.c b/kernel/signal.c
    index 7331656..f67545f 100644
    --- a/kernel/signal.c
    +++ b/kernel/signal.c
    @@ -218,13 +218,13 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi
    struct user_struct *user;

    /*
    - * We won't get problems with the target's UID changing under us
    - * because changing it requires RCU be used, and if t != current, the
    - * caller must be holding the RCU readlock (by way of a spinlock) and
    - * we use RCU protection here
    + * Protect access to @t credentials. This can go away when all
    + * callers hold rcu read lock.
    */
    + rcu_read_lock();
    user = get_uid(__task_cred(t)->user);
    atomic_inc(&user->sigpending);
    + rcu_read_unlock();

    if (override_rlimit ||
    atomic_read(&user->sigpending) <=

    \
     
     \ /
      Last update: 2009-12-10 23:13    [W:0.021 / U:91.036 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site