diff options
author | Ian Lewis <ianlewis@google.com> | 2021-05-20 23:42:10 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2021-05-20 23:44:41 -0700 |
commit | 2bed0bb09661bcd72d2d3470329e88eb7b6966a0 (patch) | |
tree | ae20a541a9a8a2c2732f8654109a2fe76a514337 /pkg/sentry/kernel/pipe | |
parent | 5bbc22797147bb83f9698b337522059099153fd7 (diff) |
Send SIGPIPE for closed pipes.
Fixes #5974
Updates #161
PiperOrigin-RevId: 375024740
Diffstat (limited to 'pkg/sentry/kernel/pipe')
-rw-r--r-- | pkg/sentry/kernel/pipe/pipe_util.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/pkg/sentry/kernel/pipe/pipe_util.go b/pkg/sentry/kernel/pipe/pipe_util.go index 2d89b9ccd..24e467e93 100644 --- a/pkg/sentry/kernel/pipe/pipe_util.go +++ b/pkg/sentry/kernel/pipe/pipe_util.go @@ -86,6 +86,12 @@ func (p *Pipe) Write(ctx context.Context, src usermem.IOSequence) (int64, error) if n > 0 { p.Notify(waiter.ReadableEvents) } + if err == unix.EPIPE { + // If we are returning EPIPE send SIGPIPE to the task. + if sendSig := linux.SignalNoInfoFuncFromContext(ctx); sendSig != nil { + sendSig(linux.SIGPIPE) + } + } return n, err } |