mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
[PATCH] kill sigqueue->lock
This lock is used in sigqueue_free(), but it is always equal to current->sighand->siglock, so we don't need to keep it in the struct sigqueue. Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
932aeafbe8
commit
19a4fcb531
2 changed files with 4 additions and 7 deletions
|
@ -25,7 +25,6 @@
|
|||
|
||||
struct sigqueue {
|
||||
struct list_head list;
|
||||
spinlock_t *lock;
|
||||
int flags;
|
||||
siginfo_t info;
|
||||
struct user_struct *user;
|
||||
|
|
|
@ -277,7 +277,6 @@ static struct sigqueue *__sigqueue_alloc(struct task_struct *t, gfp_t flags,
|
|||
} else {
|
||||
INIT_LIST_HEAD(&q->list);
|
||||
q->flags = 0;
|
||||
q->lock = NULL;
|
||||
q->user = get_uid(t->user);
|
||||
}
|
||||
return(q);
|
||||
|
@ -1371,11 +1370,12 @@ void sigqueue_free(struct sigqueue *q)
|
|||
* pending queue.
|
||||
*/
|
||||
if (unlikely(!list_empty(&q->list))) {
|
||||
read_lock(&tasklist_lock);
|
||||
spin_lock_irqsave(q->lock, flags);
|
||||
spinlock_t *lock = ¤t->sighand->siglock;
|
||||
read_lock(&tasklist_lock);
|
||||
spin_lock_irqsave(lock, flags);
|
||||
if (!list_empty(&q->list))
|
||||
list_del_init(&q->list);
|
||||
spin_unlock_irqrestore(q->lock, flags);
|
||||
spin_unlock_irqrestore(lock, flags);
|
||||
read_unlock(&tasklist_lock);
|
||||
}
|
||||
q->flags &= ~SIGQUEUE_PREALLOC;
|
||||
|
@ -1414,7 +1414,6 @@ send_sigqueue(int sig, struct sigqueue *q, struct task_struct *p)
|
|||
goto out;
|
||||
}
|
||||
|
||||
q->lock = &p->sighand->siglock;
|
||||
list_add_tail(&q->list, &p->pending.list);
|
||||
sigaddset(&p->pending.signal, sig);
|
||||
if (!sigismember(&p->blocked, sig))
|
||||
|
@ -1462,7 +1461,6 @@ send_group_sigqueue(int sig, struct sigqueue *q, struct task_struct *p)
|
|||
* We always use the shared queue for process-wide signals,
|
||||
* to avoid several races.
|
||||
*/
|
||||
q->lock = &p->sighand->siglock;
|
||||
list_add_tail(&q->list, &p->signal->shared_pending.list);
|
||||
sigaddset(&p->signal->shared_pending.signal, sig);
|
||||
|
||||
|
|
Loading…
Reference in a new issue