summaryrefslogtreecommitdiffstats
path: root/sys/sparc64
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2004-08-21 18:50:34 +0000
committeralc <alc@FreeBSD.org>2004-08-21 18:50:34 +0000
commitd421a19d6e45fca61d9d2eb22b91ad19b52e2d39 (patch)
tree359682df699ae092ec368ae149f3d38b18812c6f /sys/sparc64
parent6234ef46ca550545cf2380520cac9606ffa1624f (diff)
downloadFreeBSD-src-d421a19d6e45fca61d9d2eb22b91ad19b52e2d39.zip
FreeBSD-src-d421a19d6e45fca61d9d2eb22b91ad19b52e2d39.tar.gz
Properly free the temporary sf_buf in uiomove_fromphys() if a copyin or
copyout fails. Obtained from: DragonFlyBSD
Diffstat (limited to 'sys/sparc64')
-rw-r--r--sys/sparc64/sparc64/uio_machdep.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/sparc64/sparc64/uio_machdep.c b/sys/sparc64/sparc64/uio_machdep.c
index 2999ade..f3e2018 100644
--- a/sys/sparc64/sparc64/uio_machdep.c
+++ b/sys/sparc64/sparc64/uio_machdep.c
@@ -107,8 +107,11 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
error = copyout(cp, iov->iov_base, cnt);
else
error = copyin(iov->iov_base, cp, cnt);
- if (error)
+ if (error) {
+ if (sf != NULL)
+ sf_buf_free(sf);
goto out;
+ }
break;
case UIO_SYSSPACE:
if (uio->uio_rw == UIO_READ)
OpenPOWER on IntegriCloud