lkml.org 
[lkml]   [2020]   [Oct]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/5] x86: wire up TIF_NOTIFY_SIGNAL
    Date
    We already get the ti_work passed in arch_do_signal(), define
    TIF_NOTIFY_SIGNAL and take the appropriate action in the signal handling
    based on _TIF_NOTIFY_SIGNAL and _TIF_SIGPENDING being set.

    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    ---
    arch/x86/include/asm/thread_info.h | 2 ++
    arch/x86/kernel/signal.c | 5 ++++-
    2 files changed, 6 insertions(+), 1 deletion(-)

    diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h
    index 267701ae3d86..86ade67f21b7 100644
    --- a/arch/x86/include/asm/thread_info.h
    +++ b/arch/x86/include/asm/thread_info.h
    @@ -93,6 +93,7 @@ struct thread_info {
    #define TIF_NOTSC 16 /* TSC is not accessible in userland */
    #define TIF_IA32 17 /* IA32 compatibility process */
    #define TIF_SLD 18 /* Restore split lock detection on context switch */
    +#define TIF_NOTIFY_SIGNAL 19 /* signal notifications exist */
    #define TIF_MEMDIE 20 /* is terminating due to OOM killer */
    #define TIF_POLLING_NRFLAG 21 /* idle is polling for TIF_NEED_RESCHED */
    #define TIF_IO_BITMAP 22 /* uses I/O bitmap */
    @@ -123,6 +124,7 @@ struct thread_info {
    #define _TIF_NOTSC (1 << TIF_NOTSC)
    #define _TIF_IA32 (1 << TIF_IA32)
    #define _TIF_SLD (1 << TIF_SLD)
    +#define _TIF_NOTIFY_SIGNAL (1 << TIF_NOTIFY_SIGNAL)
    #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)
    #define _TIF_IO_BITMAP (1 << TIF_IO_BITMAP)
    #define _TIF_FORCED_TF (1 << TIF_FORCED_TF)
    diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
    index d18304e84c09..ec6490e53dc3 100644
    --- a/arch/x86/kernel/signal.c
    +++ b/arch/x86/kernel/signal.c
    @@ -808,7 +808,10 @@ void arch_do_signal(struct pt_regs *regs, unsigned long ti_work)
    {
    struct ksignal ksig;

    - if (get_signal(&ksig)) {
    + if (ti_work & _TIF_NOTIFY_SIGNAL)
    + tracehook_notify_signal();
    +
    + if ((ti_work & _TIF_SIGPENDING) && get_signal(&ksig)) {
    /* Whee! Actually deliver the signal. */
    handle_signal(&ksig, regs);
    return;
    --
    2.28.0
    \
     
     \ /
      Last update: 2020-10-15 15:19    [W:2.267 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site