mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
signal: Cleanup unused posix-timer leftovers
Remove the leftovers of sigqueue preallocation as it's not longer used. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Frederic Weisbecker <frederic@kernel.org> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lore.kernel.org/all/20241105064213.786506636@linutronix.de
This commit is contained in:
parent
6017a158be
commit
c2a4796a15
@ -338,8 +338,6 @@ extern void force_fatal_sig(int);
|
||||
extern void force_exit_sig(int);
|
||||
extern int send_sig(int, struct task_struct *, int);
|
||||
extern int zap_other_threads(struct task_struct *p);
|
||||
extern struct sigqueue *sigqueue_alloc(void);
|
||||
extern void sigqueue_free(struct sigqueue *);
|
||||
extern int do_sigaction(int, struct k_sigaction *, struct k_sigaction *);
|
||||
|
||||
static inline void clear_notify_signal(void)
|
||||
|
@ -439,8 +439,8 @@ static void __sigqueue_init(struct sigqueue *q, struct ucounts *ucounts,
|
||||
* - this may be called without locks if and only if t == current, otherwise an
|
||||
* appropriate lock must be held to stop the target task from exiting
|
||||
*/
|
||||
static struct sigqueue *__sigqueue_alloc(int sig, struct task_struct *t, gfp_t gfp_flags,
|
||||
int override_rlimit, const unsigned int sigqueue_flags)
|
||||
static struct sigqueue *sigqueue_alloc(int sig, struct task_struct *t, gfp_t gfp_flags,
|
||||
int override_rlimit)
|
||||
{
|
||||
struct ucounts *ucounts = sig_get_ucounts(t, sig, override_rlimit);
|
||||
struct sigqueue *q;
|
||||
@ -454,7 +454,7 @@ static struct sigqueue *__sigqueue_alloc(int sig, struct task_struct *t, gfp_t g
|
||||
return NULL;
|
||||
}
|
||||
|
||||
__sigqueue_init(q, ucounts, sigqueue_flags);
|
||||
__sigqueue_init(q, ucounts, 0);
|
||||
return q;
|
||||
}
|
||||
|
||||
@ -1070,7 +1070,7 @@ static int __send_signal_locked(int sig, struct kernel_siginfo *info,
|
||||
else
|
||||
override_rlimit = 0;
|
||||
|
||||
q = __sigqueue_alloc(sig, t, GFP_ATOMIC, override_rlimit, 0);
|
||||
q = sigqueue_alloc(sig, t, GFP_ATOMIC, override_rlimit);
|
||||
|
||||
if (q) {
|
||||
list_add_tail(&q->list, &pending->list);
|
||||
@ -1926,37 +1926,6 @@ bool posixtimer_init_sigqueue(struct sigqueue *q)
|
||||
return true;
|
||||
}
|
||||
|
||||
struct sigqueue *sigqueue_alloc(void)
|
||||
{
|
||||
return __sigqueue_alloc(-1, current, GFP_KERNEL, 0, SIGQUEUE_PREALLOC);
|
||||
}
|
||||
|
||||
void sigqueue_free(struct sigqueue *q)
|
||||
{
|
||||
spinlock_t *lock = ¤t->sighand->siglock;
|
||||
unsigned long flags;
|
||||
|
||||
if (WARN_ON_ONCE(!(q->flags & SIGQUEUE_PREALLOC)))
|
||||
return;
|
||||
/*
|
||||
* We must hold ->siglock while testing q->list
|
||||
* to serialize with collect_signal() or with
|
||||
* __exit_signal()->flush_sigqueue().
|
||||
*/
|
||||
spin_lock_irqsave(lock, flags);
|
||||
q->flags &= ~SIGQUEUE_PREALLOC;
|
||||
/*
|
||||
* If it is queued it will be freed when dequeued,
|
||||
* like the "regular" sigqueue.
|
||||
*/
|
||||
if (!list_empty(&q->list))
|
||||
q = NULL;
|
||||
spin_unlock_irqrestore(lock, flags);
|
||||
|
||||
if (q)
|
||||
__sigqueue_free(q);
|
||||
}
|
||||
|
||||
static void posixtimer_queue_sigqueue(struct sigqueue *q, struct task_struct *t, enum pid_type type)
|
||||
{
|
||||
struct sigpending *pending;
|
||||
|
Loading…
Reference in New Issue
Block a user