History log of /haiku/src/system/kernel/vm/VMAddressSpaceLocking.h
Revision Date Author Comments
# 02b151d3 11-Jul-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

MultiAddressSpaceLocker::AddAreaCacheAndLock(): race condition

* Add a VMArea* version of AddArea().
* AddAreaCacheAndLock(): Use the new AddArea() version. This not only
saves the ID hash table lookup, but also fixes a race condition with
delete_area(). delete_area() removes the area from the hash before
removing it from its cache, so iterating through the cache's areas
can turn up an area that no longer is in the hash. In that case we
would fail immediately. The new AddArea() won't fail in this
situation, though.

Fixes #9686: vm_copy_area() could fail for the "commpage" area. That's
an area all teams share, so any team terminating while another one was
fork()ing could trigger it.


# 21ff565f 03-Apr-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

AddressSpaceWriteLocker: Added VMAddressSpace* constructor and SetTo()
versions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36029 a95241bf-73f2-0310-859d-f6bbb57e9c96


# def9898c 02-Dec-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Moved the three address space locker classes into a separate pair of
header/source files.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34451 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 02b151d3e344772bcc6f91c874b9b87a23350a0a 11-Jul-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

MultiAddressSpaceLocker::AddAreaCacheAndLock(): race condition

* Add a VMArea* version of AddArea().
* AddAreaCacheAndLock(): Use the new AddArea() version. This not only
saves the ID hash table lookup, but also fixes a race condition with
delete_area(). delete_area() removes the area from the hash before
removing it from its cache, so iterating through the cache's areas
can turn up an area that no longer is in the hash. In that case we
would fail immediately. The new AddArea() won't fail in this
situation, though.

Fixes #9686: vm_copy_area() could fail for the "commpage" area. That's
an area all teams share, so any team terminating while another one was
fork()ing could trigger it.


# 21ff565f76443c658cfd5a67e0cc0402a2c64ecd 03-Apr-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

AddressSpaceWriteLocker: Added VMAddressSpace* constructor and SetTo()
versions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36029 a95241bf-73f2-0310-859d-f6bbb57e9c96


# def9898c9b96d366f32c39f0143e265442bd429a 02-Dec-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Moved the three address space locker classes into a separate pair of
header/source files.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34451 a95241bf-73f2-0310-859d-f6bbb57e9c96