diff options
author | gVisor bot <gvisor-bot@google.com> | 2020-12-03 03:43:54 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-12-03 03:43:54 +0000 |
commit | ba36feba216f3609a9442e3e1642a3c568d33a79 (patch) | |
tree | 73de8eb2bb1859ba14950b50536488e62deb0771 | |
parent | d0932fb684ecc47d4441773da04388c9604d1d76 (diff) | |
parent | f559db56904cacfe20027d710608e981087c1ddd (diff) |
Merge release-20201130.0-27-gf559db569 (automated)
-rw-r--r-- | pkg/sentry/kernel/fd_table_unsafe.go | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/pkg/sentry/kernel/fd_table_unsafe.go b/pkg/sentry/kernel/fd_table_unsafe.go index 470d8bf83..f17f9c59c 100644 --- a/pkg/sentry/kernel/fd_table_unsafe.go +++ b/pkg/sentry/kernel/fd_table_unsafe.go @@ -121,18 +121,21 @@ func (f *FDTable) setAll(ctx context.Context, fd int32, file *fs.File, fileVFS2 panic("VFS1 and VFS2 files set") } - slice := *(*[]unsafe.Pointer)(atomic.LoadPointer(&f.slice)) + slicePtr := (*[]unsafe.Pointer)(atomic.LoadPointer(&f.slice)) // Grow the table as required. - if last := int32(len(slice)); fd >= last { + if last := int32(len(*slicePtr)); fd >= last { end := fd + 1 if end < 2*last { end = 2 * last } - slice = append(slice, make([]unsafe.Pointer, end-last)...) - atomic.StorePointer(&f.slice, unsafe.Pointer(&slice)) + newSlice := append(*slicePtr, make([]unsafe.Pointer, end-last)...) + slicePtr = &newSlice + atomic.StorePointer(&f.slice, unsafe.Pointer(slicePtr)) } + slice := *slicePtr + var desc *descriptor if file != nil || fileVFS2 != nil { desc = &descriptor{ |