gwsystems / composite

A component-based OS
composite.seas.gwu.edu
185 stars 70 forks source link

3 step protocol for cap active needs to be fixed #363

Open WenyuanShao opened 6 years ago

WenyuanShao commented 6 years ago

3 step protocol for cap active needs to be fixed. There is a bug in this function.

gparmer commented 6 years ago

To add more detail:

The three-step protocol for capability activation is meant to address races between two capability activations in the same slot. Currently, the code in the repo simply doesn't do this. The abstractions of the code abide by the 3 step protocol, but the implementation of that abstraction does not. BUG.

The three steps are:

  1. Atomically mark the slot as allocated (with cas).
  2. Update the body of the slot but not the type, so that any parallel accesses to the slot will fail as it is being populated.
  3. Only after the slot is well-formed, do we set its type to the apporpriate value to enable accesses to the resource.

Note that once a slot is active, it is immutable with very few exceptions.