#define JOBCTL_TRAPPING_BIT    21      /* switching to TRACED */
 #define JOBCTL_LISTENING_BIT   22      /* ptracer is listening for events */
 #define JOBCTL_TRAP_FREEZE_BIT 23      /* trap for cgroup freezer */
-#define JOBCTL_TASK_WORK_BIT   24      /* set by TWA_SIGNAL */
 
 #define JOBCTL_STOP_DEQUEUED   (1UL << JOBCTL_STOP_DEQUEUED_BIT)
 #define JOBCTL_STOP_PENDING    (1UL << JOBCTL_STOP_PENDING_BIT)
 #define JOBCTL_TRAPPING                (1UL << JOBCTL_TRAPPING_BIT)
 #define JOBCTL_LISTENING       (1UL << JOBCTL_LISTENING_BIT)
 #define JOBCTL_TRAP_FREEZE     (1UL << JOBCTL_TRAP_FREEZE_BIT)
-#define JOBCTL_TASK_WORK       (1UL << JOBCTL_TASK_WORK_BIT)
 
 #define JOBCTL_TRAP_MASK       (JOBCTL_TRAP_STOP | JOBCTL_TRAP_NOTIFY)
-#define JOBCTL_PENDING_MASK    (JOBCTL_STOP_PENDING | JOBCTL_TRAP_MASK | JOBCTL_TASK_WORK)
+#define JOBCTL_PENDING_MASK    (JOBCTL_STOP_PENDING | JOBCTL_TRAP_MASK)
 
 extern bool task_set_jobctl_pending(struct task_struct *task, unsigned long mask);
 extern void task_clear_jobctl_trapping(struct task_struct *task);
 
 
 relock:
        spin_lock_irq(&sighand->siglock);
-       /*
-        * Make sure we can safely read ->jobctl() in task_work add. As Oleg
-        * states:
-        *
-        * It pairs with mb (implied by cmpxchg) before READ_ONCE. So we
-        * roughly have
-        *
-        *      task_work_add:                          get_signal:
-        *      STORE(task->task_works, new_work);      STORE(task->jobctl);
-        *      mb();                                   mb();
-        *      LOAD(task->jobctl);                     LOAD(task->task_works);
-        *
-        * and we can rely on STORE-MB-LOAD [ in task_work_add].
-        */
-       smp_store_mb(current->jobctl, current->jobctl & ~JOBCTL_TASK_WORK);
-       if (unlikely(current->task_works)) {
-               spin_unlock_irq(&sighand->siglock);
-               task_work_run();
-               goto relock;
-       }
 
        /*
         * Every stopped thread goes here after wakeup. Check to see if