summaryrefslogtreecommitdiff
path: root/hurd
diff options
context:
space:
mode:
authorneal <neal>2008-07-04 08:54:32 +0000
committerneal <neal>2008-07-04 08:54:32 +0000
commit9b1b8cc369200d061d294e072683f9ac4f74982a (patch)
treef3610f9fe4ce364ee0ea8d4938ee4c0d3b61be36 /hurd
parentb314008673a851faedebac93cfdf9dea7c39d641 (diff)
2008-07-04 Neal H. Walfield <neal@gnu.org>
* cap.h (cap_copy_x): Also call cap_shootdown if the version field changes.
Diffstat (limited to 'hurd')
-rw-r--r--hurd/ChangeLog5
-rw-r--r--hurd/cap.h10
2 files changed, 14 insertions, 1 deletions
diff --git a/hurd/ChangeLog b/hurd/ChangeLog
index ce3770c..6018dd7 100644
--- a/hurd/ChangeLog
+++ b/hurd/ChangeLog
@@ -1,5 +1,10 @@
2008-07-04 Neal H. Walfield <neal@gnu.org>
+ * cap.h (cap_copy_x): Also call cap_shootdown if the version field
+ changes.
+
+2008-07-04 Neal H. Walfield <neal@gnu.org>
+
* activity.h (ACTIVITY_MEMORY_POLICY): Reverse argument order.
(struct activity_memory_policy): Reverse order of fields.
diff --git a/hurd/cap.h b/hurd/cap.h
index 559675e..e239e85 100644
--- a/hurd/cap.h
+++ b/hurd/cap.h
@@ -640,7 +640,7 @@ cap_copy_x (activity_t activity,
#ifdef RM_INTERN
/* Changing a capability can change how addresses are translated.
- In this case, we need to shoot down all cache translation. */
+ In this case, we need to shoot down all cached translations. */
bool changes_translation = false;
if (target->oid != source.oid)
@@ -648,6 +648,11 @@ cap_copy_x (activity_t activity,
debug (5, "OID mismatch, changes translation");
changes_translation = true;
}
+ else if (target->version != source.version)
+ {
+ debug (5, "Version mismatch, changes translation");
+ changes_translation = true;
+ }
if (subpage != CAP_SUBPAGE (target) || subpages != CAP_SUBPAGES (target))
{
@@ -677,6 +682,9 @@ cap_copy_x (activity_t activity,
{
extern void cap_shootdown (struct activity *activity, struct cap *cap);
+ debug (5, "Translation changed: " CAP_FMT " -> " CAP_FMT,
+ CAP_PRINTF (target), CAP_PRINTF (&source));
+
cap_shootdown (activity, target);
}
#endif