• Atish Patra's avatar
    RISC-V: Protect all kernel sections including init early · 19a00869
    Atish Patra authored
    Currently, .init.text & .init.data are intermixed which makes it impossible
    apply different permissions to them. .init.data shouldn't need exec
    permissions while .init.text shouldn't have write permission. Moreover,
    the strict permission are only enforced /init starts. This leaves the
    kernel vulnerable from possible buggy built-in modules.
    
    Keep .init.text & .data in separate sections so that different permissions
    are applied to each section. Apply permissions to individual sections as
    early as possible. This improves the kernel protection under
    CONFIG_STRICT_KERNEL_RWX. We also need to restore the permissions for the
    entire _init section after it is freed so that those pages can be used
    for other purpose.
    Signed-off-by: default avatarAtish Patra <atish.patra@wdc.com>
    Tested-by: default avatarGreentime Hu <greentime.hu@sifive.com>
    Signed-off-by: default avatarPalmer Dabbelt <palmerdabbelt@google.com>
    19a00869
setup.c 7.22 KB