lkml.org 
[lkml]   [2022]   [May]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH v3 01/11] signal: Rename send_signal send_signal_locked
    Rename send_signal and __send_signal to send_signal_locked and
    __send_signal_locked to make send_signal usable outside of
    signal.c.

    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    ---
    include/linux/signal.h | 2 ++
    kernel/signal.c | 24 ++++++++++++------------
    2 files changed, 14 insertions(+), 12 deletions(-)

    diff --git a/include/linux/signal.h b/include/linux/signal.h
    index a6db6f2ae113..55605bdf5ce9 100644
    --- a/include/linux/signal.h
    +++ b/include/linux/signal.h
    @@ -283,6 +283,8 @@ extern int do_send_sig_info(int sig, struct kernel_siginfo *info,
    extern int group_send_sig_info(int sig, struct kernel_siginfo *info,
    struct task_struct *p, enum pid_type type);
    extern int __group_send_sig_info(int, struct kernel_siginfo *, struct task_struct *);
    +extern int send_signal_locked(int sig, struct kernel_siginfo *info,
    + struct task_struct *p, enum pid_type type);
    extern int sigprocmask(int, sigset_t *, sigset_t *);
    extern void set_current_blocked(sigset_t *);
    extern void __set_current_blocked(const sigset_t *);
    diff --git a/kernel/signal.c b/kernel/signal.c
    index 30cd1ca43bcd..b0403197b0ad 100644
    --- a/kernel/signal.c
    +++ b/kernel/signal.c
    @@ -1071,8 +1071,8 @@ static inline bool legacy_queue(struct sigpending *signals, int sig)
    return (sig < SIGRTMIN) && sigismember(&signals->signal, sig);
    }

    -static int __send_signal(int sig, struct kernel_siginfo *info, struct task_struct *t,
    - enum pid_type type, bool force)
    +static int __send_signal_locked(int sig, struct kernel_siginfo *info,
    + struct task_struct *t, enum pid_type type, bool force)
    {
    struct sigpending *pending;
    struct sigqueue *q;
    @@ -1212,8 +1212,8 @@ static inline bool has_si_pid_and_uid(struct kernel_siginfo *info)
    return ret;
    }

    -static int send_signal(int sig, struct kernel_siginfo *info, struct task_struct *t,
    - enum pid_type type)
    +int send_signal_locked(int sig, struct kernel_siginfo *info,
    + struct task_struct *t, enum pid_type type)
    {
    /* Should SIGKILL or SIGSTOP be received by a pid namespace init? */
    bool force = false;
    @@ -1245,7 +1245,7 @@ static int send_signal(int sig, struct kernel_siginfo *info, struct task_struct
    force = true;
    }
    }
    - return __send_signal(sig, info, t, type, force);
    + return __send_signal_locked(sig, info, t, type, force);
    }

    static void print_fatal_signal(int signr)
    @@ -1284,7 +1284,7 @@ __setup("print-fatal-signals=", setup_print_fatal_signals);
    int
    __group_send_sig_info(int sig, struct kernel_siginfo *info, struct task_struct *p)
    {
    - return send_signal(sig, info, p, PIDTYPE_TGID);
    + return send_signal_locked(sig, info, p, PIDTYPE_TGID);
    }

    int do_send_sig_info(int sig, struct kernel_siginfo *info, struct task_struct *p,
    @@ -1294,7 +1294,7 @@ int do_send_sig_info(int sig, struct kernel_siginfo *info, struct task_struct *p
    int ret = -ESRCH;

    if (lock_task_sighand(p, &flags)) {
    - ret = send_signal(sig, info, p, type);
    + ret = send_signal_locked(sig, info, p, type);
    unlock_task_sighand(p, &flags);
    }

    @@ -1347,7 +1347,7 @@ force_sig_info_to_task(struct kernel_siginfo *info, struct task_struct *t,
    if (action->sa.sa_handler == SIG_DFL &&
    (!t->ptrace || (handler == HANDLER_EXIT)))
    t->signal->flags &= ~SIGNAL_UNKILLABLE;
    - ret = send_signal(sig, info, t, PIDTYPE_PID);
    + ret = send_signal_locked(sig, info, t, PIDTYPE_PID);
    spin_unlock_irqrestore(&t->sighand->siglock, flags);

    return ret;
    @@ -1567,7 +1567,7 @@ int kill_pid_usb_asyncio(int sig, int errno, sigval_t addr,

    if (sig) {
    if (lock_task_sighand(p, &flags)) {
    - ret = __send_signal(sig, &info, p, PIDTYPE_TGID, false);
    + ret = __send_signal_locked(sig, &info, p, PIDTYPE_TGID, false);
    unlock_task_sighand(p, &flags);
    } else
    ret = -ESRCH;
    @@ -2103,7 +2103,7 @@ bool do_notify_parent(struct task_struct *tsk, int sig)
    * parent's namespaces.
    */
    if (valid_signal(sig) && sig)
    - __send_signal(sig, &info, tsk->parent, PIDTYPE_TGID, false);
    + __send_signal_locked(sig, &info, tsk->parent, PIDTYPE_TGID, false);
    __wake_up_parent(tsk, tsk->parent);
    spin_unlock_irqrestore(&psig->siglock, flags);

    @@ -2601,7 +2601,7 @@ static int ptrace_signal(int signr, kernel_siginfo_t *info, enum pid_type type)
    /* If the (new) signal is now blocked, requeue it. */
    if (sigismember(&current->blocked, signr) ||
    fatal_signal_pending(current)) {
    - send_signal(signr, info, current, type);
    + send_signal_locked(signr, info, current, type);
    signr = 0;
    }

    @@ -4793,7 +4793,7 @@ void kdb_send_sig(struct task_struct *t, int sig)
    "the deadlock.\n");
    return;
    }
    - ret = send_signal(sig, SEND_SIG_PRIV, t, PIDTYPE_PID);
    + ret = send_signal_locked(sig, SEND_SIG_PRIV, t, PIDTYPE_PID);
    spin_unlock(&t->sighand->siglock);
    if (ret)
    kdb_printf("Fail to deliver Signal %d to process %d.\n",
    --
    2.35.3
    \
     
     \ /
      Last update: 2022-05-05 00:42    [W:3.371 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site