read_lock(&tasklist_lock); spin_lock_irqsave(q->lock, flags); 
spinlock_t *lock = &current->sighand->siglock; read_lock(&tasklist_lock); spin_lock_irqsave(lock, flags); 
void sigqueue_free(struct sigqueue *q){	unsigned long flags;	BUG_ON(!(q->flags & SIGQUEUE_PREALLOC));	/*	 * If the signal is still pending remove it from the	 * pending queue.	 */	if (unlikely(!list_empty(&q->list))) {		read_lock(&tasklist_lock);  		spin_lock_irqsave(q->lock, flags);		if (!list_empty(&q->list))			list_del_init(&q->list);		spin_unlock_irqrestore(q->lock, flags);		read_unlock(&tasklist_lock);	}	q->flags &= ~SIGQUEUE_PREALLOC;	__sigqueue_free(q);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/19a4fcb531659f2f7d18b5d04cee039176e9540d/signal.c/buggy/kernel/signal.c