mirror of https://gitee.com/openkylin/linux.git
ext4: use RCU API in debug_print_tree
struct ext4_sb_info.system_blks was marked __rcu. But access the pointer without using RCU lock and dereference. Sparse warning with __rcu notation: block_validity.c:139:29: warning: incorrect type in argument 1 (different address spaces) block_validity.c:139:29: expected struct rb_root const * block_validity.c:139:29: got struct rb_root [noderef] <asn:4> * Link: https://lore.kernel.org/r/20191213153306.30744-1-tranmanphong@gmail.com Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Phong Tran <tranmanphong@gmail.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
9803387c55
commit
69000d82ee
|
@ -133,10 +133,13 @@ static void debug_print_tree(struct ext4_sb_info *sbi)
|
|||
{
|
||||
struct rb_node *node;
|
||||
struct ext4_system_zone *entry;
|
||||
struct ext4_system_blocks *system_blks;
|
||||
int first = 1;
|
||||
|
||||
printk(KERN_INFO "System zones: ");
|
||||
node = rb_first(&sbi->system_blks->root);
|
||||
rcu_read_lock();
|
||||
system_blks = rcu_dereference(sbi->system_blks);
|
||||
node = rb_first(&system_blks->root);
|
||||
while (node) {
|
||||
entry = rb_entry(node, struct ext4_system_zone, node);
|
||||
printk(KERN_CONT "%s%llu-%llu", first ? "" : ", ",
|
||||
|
@ -144,6 +147,7 @@ static void debug_print_tree(struct ext4_sb_info *sbi)
|
|||
first = 0;
|
||||
node = rb_next(node);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
printk(KERN_CONT "\n");
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue