OSDN Git Service

once: use __section(".data.once")
authorEric Dumazet <edumazet@google.com>
Mon, 15 Nov 2021 17:23:01 +0000 (09:23 -0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 17 Nov 2021 03:07:53 +0000 (19:07 -0800)
.data.once contains nicely packed bool variables.
It is used already by DO_ONCE_LITE().

Using it also in DO_ONCE() removes holes in .data section.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/linux/once.h

index d361fb1..f545230 100644 (file)
@@ -38,7 +38,7 @@ void __do_once_done(bool *done, struct static_key_true *once_key,
 #define DO_ONCE(func, ...)                                                  \
        ({                                                                   \
                bool ___ret = false;                                         \
-               static bool ___done = false;                                 \
+               static bool __section(".data.once") ___done = false;         \
                static DEFINE_STATIC_KEY_TRUE(___once_key);                  \
                if (static_branch_unlikely(&___once_key)) {                  \
                        unsigned long ___flags;                              \