Hello t...@!
I guess there's no need to acquire pmap locks when there's nothing
to do (USER_LDT unset). s/if defined/ifdef/ for consistency.
Index: pmap.c
===================================================================
RCS file: /cvs/src/sys/arch/i386/i386/pmap.c,v
retrieving revision 1.151
diff -u -p -r1.151 pmap.c
--- pmap.c 30 Nov 2010 19:28:59 -0000 1.151
+++ pmap.c 24 Dec 2010 16:40:47 -0000
@@ -1567,7 +1567,7 @@ pmap_reference(struct pmap *pmap)
simple_unlock(&pmap->pm_obj.vmobjlock);
}
-#if defined(PMAP_FORK)
+#ifdef PMAP_FORK
/*
* pmap_fork: perform any necessary data structure manipulation when
* a VM space is forked.
@@ -1576,10 +1576,10 @@ pmap_reference(struct pmap *pmap)
void
pmap_fork(struct pmap *pmap1, struct pmap *pmap2)
{
+#ifdef USER_LDT
simple_lock(&pmap1->pm_obj.vmobjlock);
simple_lock(&pmap2->pm_obj.vmobjlock);
-#ifdef USER_LDT
/* Copy the LDT, if necessary. */
if (pmap1->pm_flags & PMF_USER_LDT) {
union descriptor *new_ldt;
@@ -1597,10 +1597,10 @@ pmap_fork(struct pmap *pmap1, struct pma
pmap2->pm_flags |= PMF_USER_LDT;
ldt_alloc(pmap2, new_ldt, len);
}
-#endif /* USER_LDT */
simple_unlock(&pmap2->pm_obj.vmobjlock);
simple_unlock(&pmap1->pm_obj.vmobjlock);
+#endif /* USER_LDT */
}
#endif /* PMAP_FORK */