svn commit: r286277 - head/sys/kern
Ed Schouten
ed at FreeBSD.org
Tue Aug 4 06:01:14 UTC 2015
Author: ed
Date: Tue Aug 4 06:01:13 2015
New Revision: 286277
URL: https://svnweb.freebsd.org/changeset/base/286277
Log:
Fix bad arithmetic in umtx_key_get() to compute object offset.
It looks like umtx_key_get() has the addition and subtraction the wrong
way around, meaning that it fails to match in certain cases. This causes
the cloudlibc unit tests to deadlock in certain cases.
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D3287
Modified:
head/sys/kern/kern_umtx.c
Modified: head/sys/kern/kern_umtx.c
==============================================================================
--- head/sys/kern/kern_umtx.c Tue Aug 4 05:18:24 2015 (r286276)
+++ head/sys/kern/kern_umtx.c Tue Aug 4 06:01:13 2015 (r286277)
@@ -820,8 +820,8 @@ umtx_key_get(const void *addr, int type,
(share == AUTO_SHARE &&
VM_INHERIT_SHARE == entry->inheritance)) {
key->shared = 1;
- key->info.shared.offset = entry->offset + entry->start -
- (vm_offset_t)addr;
+ key->info.shared.offset = (vm_offset_t)addr -
+ entry->start + entry->offset;
vm_object_reference(key->info.shared.object);
} else {
key->shared = 0;
More information about the svn-src-all
mailing list