lkml.org 
[lkml]   [2020]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 7/8] params: use type alignment for kernel parameters
    Date
    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, 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.

    Signed-off-by: Johan Hovold <johan@kernel.org>
    ---
    include/linux/moduleparam.h | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
    index 742074ad9f6e..15ecc6cc3a3b 100644
    --- a/include/linux/moduleparam.h
    +++ b/include/linux/moduleparam.h
    @@ -288,8 +288,8 @@ struct kparam_array
    /* Default value instead of permissions? */ \
    static const char __param_str_##name[] = prefix #name; \
    static struct kernel_param __moduleparam_const __param_##name \
    - __used \
    - __section("__param") __attribute__ ((aligned(sizeof(void *)))) \
    + __used __section("__param") \
    + __aligned(__alignof__(struct kernel_param)) \
    = { __param_str_##name, THIS_MODULE, ops, \
    VERIFY_OCTAL_PERMISSIONS(perm), level, flags, { arg } }

    --
    2.26.2
    \
     
     \ /
      Last update: 2020-11-03 19:13    [W:7.121 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site