diff options
author | Jamie Liu <jamieliu@google.com> | 2020-10-23 12:51:29 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-10-23 12:53:20 -0700 |
commit | 227fd9f1b0a9123446907a662a5fe8e756cac16d (patch) | |
tree | 31c92a5863202c3e63b41468fa9c75ef5453ff1d /pkg/sentry/kernel/task_clone.go | |
parent | 8db147b55423d7dbe5f9af4e6154eab2d19025e1 (diff) |
//pkg/state fixes for VFS2.
- When encodeState.resolve() determines that the resolved reflect.Value is
contained by a previously-resolved object, set wire.Ref.Type to the
containing object's type (existing.obj.Type()) rather than the contained
value's type (obj.Type()).
- When encodeState.resolve() determines that the resolved reflect.Value
contains a previously-resolved object, handle cases where the new object
contains *multiple* previously-resolved objects. (This may cause
previously-allocated object IDs to become unused; to facilitate this, change
encodeState.pending to a map, and change the wire format to prefix each
object with its object ID.)
- Add encodeState.encodedStructs to avoid redundant encoding of structs, since
deduplication of objects via encodeState.resolve() doesn't work for objects
instantiated by StateSave() and passed to SaveValue() (i.e. fields tagged
`state:".(whatever)"`).
- Make unexported array fields deserializable via slices that refer to them by
casting away their unexportedness in decodeState.decodeObject().
Updates #1663
PiperOrigin-RevId: 338727687
Diffstat (limited to 'pkg/sentry/kernel/task_clone.go')
0 files changed, 0 insertions, 0 deletions