Page MenuHomeFreeBSD

D43799.diff
No OneTemporary

D43799.diff

diff --git a/sys/kern/kern_ktrace.c b/sys/kern/kern_ktrace.c
--- a/sys/kern/kern_ktrace.c
+++ b/sys/kern/kern_ktrace.c
@@ -767,7 +767,7 @@
int datalen;
char *buf;
- if (error) {
+ if (error != 0 && (rw == UIO_READ || error == EFAULT)) {
freeuio(uio);
return;
}
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -577,7 +577,8 @@
cnt -= auio->uio_resid;
#ifdef KTRACE
if (ktruio != NULL) {
- ktruio->uio_resid = cnt;
+ if (error == 0)
+ ktruio->uio_resid = cnt;
ktrgenio(fd, UIO_WRITE, ktruio, error);
}
#endif
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c
--- a/sys/kern/uipc_syscalls.c
+++ b/sys/kern/uipc_syscalls.c
@@ -772,7 +772,8 @@
td->td_retval[0] = len - auio.uio_resid;
#ifdef KTRACE
if (ktruio != NULL) {
- ktruio->uio_resid = td->td_retval[0];
+ if (error == 0)
+ ktruio->uio_resid = td->td_retval[0];
ktrgenio(s, UIO_WRITE, ktruio, error);
}
#endif
diff --git a/sys/netinet/sctp_syscalls.c b/sys/netinet/sctp_syscalls.c
--- a/sys/netinet/sctp_syscalls.c
+++ b/sys/netinet/sctp_syscalls.c
@@ -290,7 +290,8 @@
td->td_retval[0] = len - auio.uio_resid;
#ifdef KTRACE
if (ktruio != NULL) {
- ktruio->uio_resid = td->td_retval[0];
+ if (error == 0)
+ ktruio->uio_resid = td->td_retval[0];
ktrgenio(uap->sd, UIO_WRITE, ktruio, error);
}
#endif /* KTRACE */
@@ -404,7 +405,8 @@
td->td_retval[0] = len - auio.uio_resid;
#ifdef KTRACE
if (ktruio != NULL) {
- ktruio->uio_resid = td->td_retval[0];
+ if (error == 0)
+ ktruio->uio_resid = td->td_retval[0];
ktrgenio(uap->sd, UIO_WRITE, ktruio, error);
}
#endif /* KTRACE */

File Metadata

Mime Type
text/plain
Expires
Thu, Feb 13, 9:31 PM (4 h, 17 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16623906
Default Alt Text
D43799.diff (1 KB)

Event Timeline