diff options
author | gVisor bot <gvisor-bot@google.com> | 2020-10-02 19:27:31 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-10-02 19:27:31 +0000 |
commit | a0b63cf9de4a2ccac12b5697e7e0f749656da396 (patch) | |
tree | ec187a7c2bbb4b2ea1bb2de67e0ed6d26ed62722 /pkg/sentry/fsimpl/signalfd | |
parent | a0712b6e67d589768f80acbef2776b06962ade27 (diff) | |
parent | 4f462b0ed9912fa19b3a3eab6d2f08a98d364574 (diff) |
Merge release-20200921.0-102-g4f462b0ed (automated)
Diffstat (limited to 'pkg/sentry/fsimpl/signalfd')
-rw-r--r-- | pkg/sentry/fsimpl/signalfd/signalfd.go | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/pkg/sentry/fsimpl/signalfd/signalfd.go b/pkg/sentry/fsimpl/signalfd/signalfd.go index bf11b425a..10f1452ef 100644 --- a/pkg/sentry/fsimpl/signalfd/signalfd.go +++ b/pkg/sentry/fsimpl/signalfd/signalfd.go @@ -16,7 +16,6 @@ package signalfd import ( "gvisor.dev/gvisor/pkg/abi/linux" - "gvisor.dev/gvisor/pkg/binary" "gvisor.dev/gvisor/pkg/context" "gvisor.dev/gvisor/pkg/sentry/kernel" "gvisor.dev/gvisor/pkg/sentry/vfs" @@ -95,8 +94,7 @@ func (sfd *SignalFileDescription) Read(ctx context.Context, dst usermem.IOSequen } // Copy out the signal info using the specified format. - var buf [128]byte - binary.Marshal(buf[:0], usermem.ByteOrder, &linux.SignalfdSiginfo{ + infoNative := linux.SignalfdSiginfo{ Signo: uint32(info.Signo), Errno: info.Errno, Code: info.Code, @@ -105,9 +103,13 @@ func (sfd *SignalFileDescription) Read(ctx context.Context, dst usermem.IOSequen Status: info.Status(), Overrun: uint32(info.Overrun()), Addr: info.Addr(), - }) - n, err := dst.CopyOut(ctx, buf[:]) - return int64(n), err + } + n, err := infoNative.WriteTo(dst.Writer(ctx)) + if err == usermem.ErrEndOfIOSequence { + // Partial copy-out ok. + err = nil + } + return n, err } // Readiness implements waiter.Waitable.Readiness. |