lkml.org 
[lkml]   [2020]   [Aug]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH v1 11/19] powerpc/signal32: Simplify logging in handle_rt_signal32()
    Date
    If something is bad in the frame, there is no point in
    knowing which part of the frame exactly is wrong as it
    got allocated as a single block.

    Always print the root address of the frame in case on
    failed user access, just like handle_signal32().

    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    ---
    arch/powerpc/kernel/signal_32.c | 6 +-----
    1 file changed, 1 insertion(+), 5 deletions(-)

    diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
    index d1087dd87174..495bee1b713d 100644
    --- a/arch/powerpc/kernel/signal_32.c
    +++ b/arch/powerpc/kernel/signal_32.c
    @@ -754,7 +754,6 @@ int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset,
    struct rt_sigframe __user *rt_sf;
    struct mcontext __user *frame;
    struct mcontext __user *tm_frame = NULL;
    - void __user *addr;
    unsigned long newsp = 0;
    int sigret;
    unsigned long tramp;
    @@ -769,7 +768,6 @@ int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset,
    /* Set up Signal Frame */
    /* Put a Real Time Context onto stack */
    rt_sf = get_sigframe(ksig, tsk, sizeof(*rt_sf), 1);
    - addr = rt_sf;
    if (!access_ok(rt_sf, sizeof(*rt_sf)))
    goto badframe;

    @@ -784,7 +782,6 @@ int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset,

    /* Save user registers on the stack */
    frame = &rt_sf->uc.uc_mcontext;
    - addr = frame;
    if (vdso32_rt_sigtramp && tsk->mm->context.vdso_base) {
    sigret = 0;
    tramp = tsk->mm->context.vdso_base + vdso32_rt_sigtramp;
    @@ -820,7 +817,6 @@ int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset,

    /* create a stack frame for the caller of the handler */
    newsp = ((unsigned long)rt_sf) - (__SIGNAL_FRAMESIZE + 16);
    - addr = (void __user *)regs->gpr[1];
    if (put_user(regs->gpr[1], (u32 __user *)newsp))
    goto badframe;

    @@ -837,7 +833,7 @@ int handle_rt_signal32(struct ksignal *ksig, sigset_t *oldset,
    return 0;

    badframe:
    - signal_fault(tsk, regs, "handle_rt_signal32", addr);
    + signal_fault(tsk, regs, "handle_rt_signal32", rt_sf);

    return 1;
    }
    --
    2.25.0
    \
     
     \ /
      Last update: 2020-08-12 14:07    [W:3.442 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site