From 2bed0bb09661bcd72d2d3470329e88eb7b6966a0 Mon Sep 17 00:00:00 2001 From: Ian Lewis Date: Thu, 20 May 2021 23:42:10 -0700 Subject: Send SIGPIPE for closed pipes. Fixes #5974 Updates #161 PiperOrigin-RevId: 375024740 --- pkg/sentry/kernel/pipe/pipe_util.go | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'pkg/sentry/kernel/pipe') 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 } -- cgit v1.2.3