summaryrefslogtreecommitdiffstats
path: root/sys/kern/sys_generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/sys_generic.c')
-rw-r--r--sys/kern/sys_generic.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
index b5a9c41..a779711 100644
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -411,8 +411,11 @@ dofilewrite(p, fp, fd, buf, nbyte, offset, flags)
if (auio.uio_resid != cnt && (error == ERESTART ||
error == EINTR || error == EWOULDBLOCK))
error = 0;
- if (error == EPIPE)
+ if (error == EPIPE) {
+ PROC_LOCK(p);
psignal(p, SIGPIPE);
+ PROC_UNLOCK(p);
+ }
}
cnt -= auio.uio_resid;
#ifdef KTRACE
@@ -504,8 +507,11 @@ writev(p, uap)
if (auio.uio_resid != cnt && (error == ERESTART ||
error == EINTR || error == EWOULDBLOCK))
error = 0;
- if (error == EPIPE)
+ if (error == EPIPE) {
+ PROC_LOCK(p);
psignal(p, SIGPIPE);
+ PROC_UNLOCK(p);
+ }
}
cnt -= auio.uio_resid;
#ifdef KTRACE
OpenPOWER on IntegriCloud