• Ard Biesheuvel's avatar
    arm64/alternatives: don't patch up internal branches · 5679b281
    Ard Biesheuvel authored
    Commit f7b93d42 ("arm64/alternatives: use subsections for replacement
    sequences") moved the alternatives replacement sequences into subsections,
    in order to keep the as close as possible to the code that they replace.
    
    Unfortunately, this broke the logic in branch_insn_requires_update,
    which assumed that any branch into kernel executable code was a branch
    that required updating, which is no longer the case now that the code
    sequences that are patched in are in the same section as the patch site
    itself.
    
    So the only way to discriminate branches that require updating and ones
    that don't is to check whether the branch targets the replacement sequence
    itself, and so we can drop the call to kernel_text_address() entirely.
    
    Fixes: f7b93d42
    
     ("arm64/alternatives: use subsections for replacement sequences")
    Reported-by: default avatarAlexandru Elisei <alexandru.elisei@arm.com>
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Tested-by: Alexandru Elisei <alexandru.elise...
    5679b281
alternative.c 6.68 KB