• Andrew Donnellan's avatar
    powerpc/rtas: Fix array overrun in ppc_rtas() syscall · a9862c74
    Andrew Donnellan authored
    If ppc_rtas() is called with args.nargs == 16 and args.nret == 0,
    args.rets is set to point to &args.args[16], which is beyond the end of
    the args.args array. This results in a minor read overrun of the array
    when we check the first return code (which, per PAPR, is a required
    output of all RTAS calls) to see if there's been a hardware error.
    
    Change the nargs/nret check to ensure nargs is <= 15, allowing room for
    the status code. Users shouldn't be calling with nret == 0, but there's
    no real harm if they do, so we don't stop them.
    Signed-off-by: default avatarAndrew Donnellan <andrew.donnellan@au1.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    a9862c74
rtas.c 29 KB