Re: [PATCH] de_thread: eliminate unneccessary sighand locking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> while switching current->sighand de_thread does:
> 
> 	write_lock_irq(&tasklist_lock);
> 	spin_lock(&oldsighand->siglock);
> 	spin_lock(&newsighand->siglock);
> 
> 	current->sighand = newsighand;
> 	recalc_sigpending();
> 
> Is these 2 sighand locks are really needed?

Yes.  Other processes can do spin_lock_irq(&ourtask->sighand->siglock);
without holding tasklist_lock.  If someone just did that, they hold
oldsighand->siglock but no newsighand->siglock, and may then be about to
look at ourtask->sighand.  By holding oldsighand->siglock, we ensure that
we can't be colliding with anything like that.  

> The only possibility that I can imagine is that some process
> does:
> 	read_lock(tasklist_lock);
> 	task = find_task();
> 	spin_lock(task->sighand->siglock);
> 	read_unlock(tasklist_lock);
> 	play with task->signal
> 
> Is this possible/allowed?

Yes.

> Signed-off-by: Oleg Nesterov <[email protected]>

NAK from me.


Thanks,
Roland
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux