lkml.org 
[lkml]   [2015]   [Nov]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 58/94] powerpc/rtas: Validate rtas.entry before calling enter_rtas()
    Date
    3.16.7-ckt20 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>

    commit 8832317f662c06f5c06e638f57bfe89a71c9b266 upstream.

    Currently we do not validate rtas.entry before calling enter_rtas(). This
    leads to a kernel oops when user space calls rtas system call on a powernv
    platform (see below). This patch adds code to validate rtas.entry before
    making enter_rtas() call.

    Oops: Exception in kernel mode, sig: 4 [#1]
    SMP NR_CPUS=1024 NUMA PowerNV
    task: c000000004294b80 ti: c0000007e1a78000 task.ti: c0000007e1a78000
    NIP: 0000000000000000 LR: 0000000000009c14 CTR: c000000000423140
    REGS: c0000007e1a7b920 TRAP: 0e40 Not tainted (3.18.17-340.el7_1.pkvm3_1_0.2400.1.ppc64le)
    MSR: 1000000000081000 <HV,ME> CR: 00000000 XER: 00000000
    CFAR: c000000000009c0c SOFTE: 0
    NIP [0000000000000000] (null)
    LR [0000000000009c14] 0x9c14
    Call Trace:
    [c0000007e1a7bba0] [c00000000041a7f4] avc_has_perm_noaudit+0x54/0x110 (unreliable)
    [c0000007e1a7bd80] [c00000000002ddc0] ppc_rtas+0x150/0x2d0
    [c0000007e1a7be30] [c000000000009358] syscall_exit+0x0/0x98

    Fixes: 55190f88789a ("powerpc: Add skeleton PowerNV platform")
    Reported-by: NAGESWARA R. SASTRY <nasastry@in.ibm.com>
    Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
    [mpe: Reword change log, trim oops, and add stable + fixes]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    arch/powerpc/kernel/rtas.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
    index af0dafab5807..79c459a2b684 100644
    --- a/arch/powerpc/kernel/rtas.c
    +++ b/arch/powerpc/kernel/rtas.c
    @@ -1045,6 +1045,9 @@ asmlinkage int ppc_rtas(struct rtas_args __user *uargs)
    if (!capable(CAP_SYS_ADMIN))
    return -EPERM;

    + if (!rtas.entry)
    + return -EINVAL;
    +
    if (copy_from_user(&args, uargs, 3 * sizeof(u32)) != 0)
    return -EFAULT;


    \
     
     \ /
      Last update: 2015-11-13 12:01    [W:4.297 / U:0.168 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site