• Maciej W. Rozycki's avatar
    MIPS: prctl: Disallow FRE without FR with PR_SET_FP_MODE requests · 302d9889
    Maciej W. Rozycki authored
    BugLink: https://bugs.launchpad.net/bugs/1776177
    
    commit 28e4213d upstream.
    
    Having PR_FP_MODE_FRE (i.e. Config5.FRE) set without PR_FP_MODE_FR (i.e.
    Status.FR) is not supported as the lone purpose of Config5.FRE is to
    emulate Status.FR=0 handling on FPU hardware that has Status.FR=1
    hardwired[1][2].  Also we do not handle this case elsewhere, and assume
    throughout our code that TIF_HYBRID_FPREGS and TIF_32BIT_FPREGS cannot
    be set both at once for a task, leading to inconsistent behaviour if
    this does happen.
    
    Return unsuccessfully then from prctl(2) PR_SET_FP_MODE calls requesting
    PR_FP_MODE_FRE to be set with PR_FP_MODE_FR clear.  This corresponds to
    modes allowed by `mips_set_personality_fp'.
    
    References:
    
    [1] "MIPS Architecture For Programmers, Vol. III: MIPS32 / microMIPS32
        Privileged Resource Architecture", Imagination Technologies,
        Document Number: MD00090, Revision 6.02, July 10, 2015, Table 9.69
        "Config5 Register Field Descriptions", p. 262
    
    [2] "MIPS Architecture For Programmers, Volume III: MIPS64 / microMIPS64
        Privileged Resource Architecture", Imagination Technologies,
        Document Number: MD00091, Revision 6.03, December 22, 2015, Table
        9.72 "Config5 Register Field Descriptions", p. 288
    
    Fixes: 9791554b ("MIPS,prctl: add PR_[GS]ET_FP_MODE prctl options for MIPS")
    Signed-off-by: default avatarMaciej W. Rozycki <macro@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: <stable@vger.kernel.org> # 4.0+
    Patchwork: https://patchwork.linux-mips.org/patch/19327/Signed-off-by: default avatarJames Hogan <jhogan@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: default avatarJuerg Haefliger <juergh@canonical.com>
    Signed-off-by: default avatarKhalid Elmously <khalid.elmously@canonical.com>
    302d9889
process.c 18 KB