]> www.infradead.org Git - users/willy/linux.git/commitdiff
srcu: Replace WARN_ON_ONCE() with BUILD_BUG_ON() if possible
authorZhen Lei <thunder.leizhen@huawei.com>
Thu, 22 Aug 2024 03:21:28 +0000 (11:21 +0800)
committerFrederic Weisbecker <frederic@kernel.org>
Wed, 23 Oct 2024 16:01:36 +0000 (18:01 +0200)
The value of ARRAY_SIZE() can be determined at compile time, so if both
sides of the equation are ARRAY_SIZE(), using BUILD_BUG_ON() can help us
catch the problem earlier.

While there are cases where unequal array sizes will work, there is no
point in allowing them, so it makes more sense to force them to be equal
using BUILD_BUG_ON().

Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
Signed-off-by: Neeraj Upadhyay <neeraj.upadhyay@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
kernel/rcu/srcutree.c

index 31706e3293bcee7ab75d2100899cb2f77ec207bd..78afaffd1b2623be5d3a369ea53350754e7f453c 100644 (file)
@@ -128,7 +128,7 @@ static void init_srcu_struct_data(struct srcu_struct *ssp)
         * Initialize the per-CPU srcu_data array, which feeds into the
         * leaves of the srcu_node tree.
         */
-       WARN_ON_ONCE(ARRAY_SIZE(sdp->srcu_lock_count) !=
+       BUILD_BUG_ON(ARRAY_SIZE(sdp->srcu_lock_count) !=
                     ARRAY_SIZE(sdp->srcu_unlock_count));
        for_each_possible_cpu(cpu) {
                sdp = per_cpu_ptr(ssp->sda, cpu);
@@ -187,7 +187,7 @@ static bool init_srcu_struct_nodes(struct srcu_struct *ssp, gfp_t gfp_flags)
        /* Each pass through this loop initializes one srcu_node structure. */
        srcu_for_each_node_breadth_first(ssp, snp) {
                spin_lock_init(&ACCESS_PRIVATE(snp, lock));
-               WARN_ON_ONCE(ARRAY_SIZE(snp->srcu_have_cbs) !=
+               BUILD_BUG_ON(ARRAY_SIZE(snp->srcu_have_cbs) !=
                             ARRAY_SIZE(snp->srcu_data_have_cbs));
                for (i = 0; i < ARRAY_SIZE(snp->srcu_have_cbs); i++) {
                        snp->srcu_have_cbs[i] = SRCU_SNP_INIT_SEQ;