• Ard Biesheuvel's avatar
    arm64: module: fix relocation of movz instruction with negative immediate · b24a5575
    Ard Biesheuvel authored
    The test whether a movz instruction with a signed immediate should be
    turned into a movn instruction (i.e., when the immediate is negative)
    is flawed, since the value of imm is always positive. Also, the
    subsequent bounds check is incorrect since the limit update never
    executes, due to the fact that the imm_type comparison will always be
    false for negative signed immediates.
    
    Let's fix this by performing the sign test on sval directly, and
    replacing the bounds check with a simple comparison against U16_MAX.
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    [will: tidied up use of sval, renamed MOVK enum value to MOVKZ]
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    b24a5575
module.c 10.7 KB