• V
    blk-cgroup: Fix RCU correctness warning in cfq_init_queue() · dcf097b2
    Vivek Goyal 提交于
    It is necessary to be in an RCU read-side critical section when invoking
    css_id(), so this patch adds one to blkiocg_add_blkio_group().  This is
    actually a false positive, because this is called at initialization time
    and hence always refers to the root cgroup, which cannot go away.
    
    [  103.790505] ===================================================
    [  103.790509] [ INFO: suspicious rcu_dereference_check() usage. ]
    [  103.790511] ---------------------------------------------------
    [  103.790514] kernel/cgroup.c:4432 invoked rcu_dereference_check() without protection!
    [  103.790517]
    [  103.790517] other info that might help us debug this:
    [  103.790519]
    [  103.790521]
    [  103.790521] rcu_scheduler_active = 1, debug_locks = 1
    [  103.790524] 4 locks held by bash/4422:
    [  103.790526]  #0:  (&buffer->mutex){+.+.+.}, at: [<ffffffff8114befa>] sysfs_write_file+0x3c/0x144
    [  103.790537]  #1:  (s_active#102){.+.+.+}, at: [<ffffffff8114bfa5>] sysfs_write_file+0xe7/0x144
    [  103.790544]  #2:  (&q->sysfs_lock){+.+.+.}, at: [<ffffffff812263b1>] queue_attr_store+0x49/0x8f
    [  103.790552]  #3:  (&(&blkcg->lock)->rlock){......}, at: [<ffffffff8122e4db>] blkiocg_add_blkio_group+0x2b/0xad
    [  103.790560]
    [  103.790561] stack backtrace:
    [  103.790564] Pid: 4422, comm: bash Not tainted 2.6.34-rc4-blkio-second-crash #81
    [  103.790567] Call Trace:
    [  103.790572]  [<ffffffff81068f57>] lockdep_rcu_dereference+0x9d/0xa5
    [  103.790577]  [<ffffffff8107fac1>] css_id+0x44/0x57
    [  103.790581]  [<ffffffff8122e503>] blkiocg_add_blkio_group+0x53/0xad
    [  103.790586]  [<ffffffff81231936>] cfq_init_queue+0x139/0x32c
    [  103.790591]  [<ffffffff8121f2d0>] elv_iosched_store+0xbf/0x1bf
    [  103.790595]  [<ffffffff812263d8>] queue_attr_store+0x70/0x8f
    [  103.790599]  [<ffffffff8114bfa5>] ? sysfs_write_file+0xe7/0x144
    [  103.790603]  [<ffffffff8114bfc6>] sysfs_write_file+0x108/0x144
    [  103.790609]  [<ffffffff810f527f>] vfs_write+0xae/0x10b
    [  103.790612]  [<ffffffff81069863>] ? trace_hardirqs_on_caller+0x10c/0x130
    [  103.790616]  [<ffffffff810f539c>] sys_write+0x4a/0x6e
    [  103.790622]  [<ffffffff81002b5b>] system_call_fastpath+0x16/0x1b
    [  103.790625]
    Located-by: NMiles Lane <miles.lane@gmail.com>
    Signed-off-by: NVivek Goyal <vgoyal@redhat.com>
    Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
    dcf097b2
cfq-iosched.c 98.5 KB