diff options
Diffstat (limited to 'kernel/rcutree.c')
-rw-r--r-- | kernel/rcutree.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c index 0a4c32879398..3b13d64b010b 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c | |||
@@ -1811,11 +1811,17 @@ static void __init rcu_init_levelspread(struct rcu_state *rsp) | |||
1811 | */ | 1811 | */ |
1812 | static void __init rcu_init_one(struct rcu_state *rsp) | 1812 | static void __init rcu_init_one(struct rcu_state *rsp) |
1813 | { | 1813 | { |
1814 | static char *buf[] = { "rcu_node_level_0", | ||
1815 | "rcu_node_level_1", | ||
1816 | "rcu_node_level_2", | ||
1817 | "rcu_node_level_3" }; /* Match MAX_RCU_LVLS */ | ||
1814 | int cpustride = 1; | 1818 | int cpustride = 1; |
1815 | int i; | 1819 | int i; |
1816 | int j; | 1820 | int j; |
1817 | struct rcu_node *rnp; | 1821 | struct rcu_node *rnp; |
1818 | 1822 | ||
1823 | BUILD_BUG_ON(MAX_RCU_LVLS > ARRAY_SIZE(buf)); /* Fix buf[] init! */ | ||
1824 | |||
1819 | /* Initialize the level-tracking arrays. */ | 1825 | /* Initialize the level-tracking arrays. */ |
1820 | 1826 | ||
1821 | for (i = 1; i < NUM_RCU_LVLS; i++) | 1827 | for (i = 1; i < NUM_RCU_LVLS; i++) |
@@ -1829,7 +1835,8 @@ static void __init rcu_init_one(struct rcu_state *rsp) | |||
1829 | rnp = rsp->level[i]; | 1835 | rnp = rsp->level[i]; |
1830 | for (j = 0; j < rsp->levelcnt[i]; j++, rnp++) { | 1836 | for (j = 0; j < rsp->levelcnt[i]; j++, rnp++) { |
1831 | spin_lock_init(&rnp->lock); | 1837 | spin_lock_init(&rnp->lock); |
1832 | lockdep_set_class(&rnp->lock, &rcu_node_class[i]); | 1838 | lockdep_set_class_and_name(&rnp->lock, |
1839 | &rcu_node_class[i], buf[i]); | ||
1833 | rnp->gpnum = 0; | 1840 | rnp->gpnum = 0; |
1834 | rnp->qsmask = 0; | 1841 | rnp->qsmask = 0; |
1835 | rnp->qsmaskinit = 0; | 1842 | rnp->qsmaskinit = 0; |