diff options
author | Steven Rostedt (VMware) <rostedt@goodmis.org> | 2017-03-03 01:28:45 +0300 |
---|---|---|
committer | Steven Rostedt (VMware) <rostedt@goodmis.org> | 2017-03-03 17:45:00 +0300 |
commit | b17ef2ed624aa7c1f68ed11acd16ecbf80fe01d7 (patch) | |
tree | bcad6c5b7af4f880d1f52370cfa84632ba94cef9 | |
parent | cd8d860dcce906cd477be7d0648ba6f56a52eaa6 (diff) | |
download | linux-b17ef2ed624aa7c1f68ed11acd16ecbf80fe01d7.tar.xz |
jump_label: Add comment about initialization order for anonymous unions
Commit 3821fd35b58d ("jump_label: Reduce the size of struct static_key")
broke old compilers that could not handle static initialization of anonymous
unions. Boris fixed it with a patch that added brackets around the static
initializer. But this creates a dependency between those initializers and
the structure's order of its fields. Document this dependency in case new
fields are added to struct static_key in the future.
Noted-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Suggested-by: Chris Mason <clm@fb.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
-rw-r--r-- | include/linux/jump_label.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h index a7f90117cf7d..28e04a33535a 100644 --- a/include/linux/jump_label.h +++ b/include/linux/jump_label.h @@ -90,6 +90,13 @@ extern bool static_key_initialized; struct static_key { atomic_t enabled; /* + * Note: + * To make anonymous unions work with old compilers, the static + * initialization of them requires brackets. This creates a dependency + * on the order of the struct with the initializers. If any fields + * are added, STATIC_KEY_INIT_TRUE and STATIC_KEY_INIT_FALSE may need + * to be modified. + * * bit 0 => 1 if key is initially true * 0 if initially false * bit 1 => 1 if points to struct static_key_mod |