params: use type alignment for kernel parameters
authorJohan Hovold <johan@kernel.org>
Mon, 23 Nov 2020 10:23:18 +0000 (11:23 +0100)
committerJessica Yu <jeyu@kernel.org>
Wed, 25 Nov 2020 14:45:03 +0000 (15:45 +0100)
commitfe2f4fe139b321a38daafc715aeb7d21d9e8e5ad
treee5face2f34980a240b4e9413009086ae223e8c63
parent8d6615f1fccc4f39d7d3dcf286b33e8a1e833d2b
params: use type alignment for kernel parameters

Specify type alignment for kernel parameters instead of sizeof(void *).

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 __param array stride.

Using __alignof__(struct kernel_param) rather than sizeof(void *) 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 kernel_param is actually two
and that adding a 1- or 2-byte field to the 20-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>
include/linux/moduleparam.h