documentation_complete: true

title: 'Disable the 32-bit vDSO'

description: |-
    Certain buggy versions of glibc (2.3.3) will crash if they are presented with a 32-bit vDSO
    that is not mapped at the address indicated in its segment table.
    Setting <tt>CONFIG_COMPAT_VDSO</tt> to <tt>y</tt> turns off the 32-bit VDSO and works
    around the glibc bug.

    {{{ describe_kernel_build_config("CONFIG_COMPAT_VDSO", "n") | indent(4) }}}

rationale: |-
    Enabling VDSO compatibility hurts performance and disables ASLR.

warnings:
    {{{ warning_kernel_build_config() | indent(4) }}}

severity: low

identifiers:
    cce@rhel8: CCE-87256-4
    cce@rhel9: CCE-87257-2
    cce@rhel10: CCE-88353-8

ocil_clause: 'the kernel was not built with the required value'

ocil: |-
    {{{ ocil_kernel_build_config("CONFIG_COMPAT_VDSO", "n") | indent(4) }}}

template:
    name: kernel_build_config
    vars:
        config: CONFIG_COMPAT_VDSO
        value: 'n'

