Re: sysvshm: replace Giant with a local sx lock

From: Mateusz Guzik <mjguzik_at_gmail.com>
Date: Tue, 23 Apr 2013 23:36:21 +0200
On Tue, Apr 23, 2013 at 11:55:32PM +0300, Konstantin Belousov wrote:
> On Tue, Apr 23, 2013 at 10:38:23PM +0200, Mateusz Guzik wrote:
> > I would like to replace Giant with a local sx lock in sysvshm code.
> > Looked really straightforward so maybe I missed something.
> 
> At very least, the shmget_existing() is no longer functional.
> The sx is owned around tsleep(), and thus a progress cannot be made
> by other thread, which needs the same sx lock.
> 
> Use of the SHMSEG_REMOVED in the shmget_allocate_segment() does
> not make any sense in your patch, since sleeping malloc allocation
> owns sx and prevent other threads from finding the segment.
> 
> I did not looked further.

Thank you for review, I definitely skimmed too fast.

Looks like this code has some bugs as it is already, e.g. kern_shmat
does not re-check for NULL p->p_vmspace->vm_shm after malloc.

I will respin in a couple of days with a better patch.
-- 
Mateusz Guzik <mjguzik gmail.com>
Received on Tue Apr 23 2013 - 19:36:26 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:36 UTC