aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/init.h
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2020-11-23 11:23:16 +0100
committerJessica Yu <jeyu@kernel.org>2020-12-01 10:46:27 +0100
commit147ad605dc12c515c97136899ccb5c70e6c674e1 (patch)
tree11d052f977f46490f8e353612bf3ef17b4b5e4f7 /include/linux/init.h
parentparams: clean up module-param macros (diff)
downloadlinux-dev-147ad605dc12c515c97136899ccb5c70e6c674e1.tar.xz
linux-dev-147ad605dc12c515c97136899ccb5c70e6c674e1.zip
init: use type alignment for kernel parameters
Specify type alignment for kernel parameters instead of sizeof(long). The alignment attribute is used to prevent gcc from increasing the alignment of objects with static extent as an optimisation, something which would mess up the __setup array stride. Using __alignof__(struct obs_kernel_param) rather than sizeof(long) is preferred since it better indicates why it is there and doesn't break should the type size or alignment change. Note that on m68k the alignment of struct obs_kernel_param is actually two and that adding a 1- or 2-byte field to the 12-byte struct would cause a breakage with the current 4-byte alignment. Link: https://lore.kernel.org/lkml/20201103175711.10731-1-johan@kernel.org Signed-off-by: Johan Hovold <johan@kernel.org> Signed-off-by: Jessica Yu <jeyu@kernel.org>
Diffstat (limited to 'include/linux/init.h')
-rw-r--r--include/linux/init.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/init.h b/include/linux/init.h
index 7b53cb3092ee..e668832ef66a 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -255,7 +255,7 @@ struct obs_kernel_param {
__aligned(1) = str; \
static struct obs_kernel_param __setup_##unique_id \
__used __section(".init.setup") \
- __attribute__((aligned((sizeof(long))))) \
+ __aligned(__alignof__(struct obs_kernel_param)) \
= { __setup_str_##unique_id, fn, early }
#define __setup(str, fn) \