lkml.org 
[lkml]   [2009]   [Dec]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    Subject[patch 0/9] Fix various __task_cred related invalid RCU assumptions
    While auditing the read_lock(&tasklist_lock) sites for a possible
    conversion to rcu-read_lock() I stumbled over an unprotected user of
    __task_cred in kernel/sys.c

    That caused me to audit all the __task_cred usage sites except in
    kernel/exit.c.

    Most of the usage sites are correct, but some of them trip over
    invalid assumptions about the protection which is given by RCU.

    - spinlocked/preempt_disabled regions are equivalent to rcu_read_lock():

    That's wrong. RCU does not guarantee that.

    It has been that way due to implementation details and it still is
    valid for CONFIG_TREE_PREEMPT_RCU=n, but there is no guarantee that
    this will be the case forever.

    - interrupt disabled regions are equivalent to rcu_read_lock():

    Wrong again. RCU does not guarantee that.

    It's true for current mainline, but again this is an implementation
    detail and there is no guarantee by the RCU semantics.

    Indeed we want to get rid of that to avoid scalability issues on
    large systems and preempt-rt got already rid of it to a certain
    extent.

    I'm sure we are lucky that CONFIG_TREE_PREEMPT_RCU=y is not yet wide
    spread and the code pathes are esoteric enough not to trigger that
    subtle races (some of them might just error out silently).

    Nevertheless we need to fix all invalid assumptions about RCU
    protection.

    The following patch series fixes all yet known affected __task_cred()
    sites, but there is more auditing of all other rcu users necessary.

    Thanks,

    tglx



    \
     
     \ /
      Last update: 2009-12-10 01:59    [W:0.025 / U:0.328 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site