• Paul Burton's avatar
    MIPS: Bail on unsupported module relocs · 04211a57
    Paul Burton authored
    When an unsupported reloc is encountered in a module, we currently
    blindly branch to whatever would be at its entry in the reloc handler
    function pointer arrays. This may be NULL, or if the unsupported reloc
    has a type greater than that of the supported reloc with the highest
    type then we'll dereference some value after the function pointer array
    & branch to that. The result is at best a kernel oops.
    
    Fix this by checking that the reloc type has an entry in the function
    pointer array (ie. is less than the number of items in the array) and
    that the handler is non-NULL, returning an error code to fail the module
    load if no handler is found.
    Signed-off-by: default avatarPaul Burton <paul.burton@imgtec.com>
    Cc: James Hogan <james.hogan@imgtec.com>
    Cc: Steven J. Hill <Steven.Hill@imgtec.com>
    Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/12432/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    04211a57
module-rela.c 4.2 KB