summaryrefslogtreecommitdiffstats
path: root/sys/arm
diff options
context:
space:
mode:
authorcognet <cognet@FreeBSD.org>2008-03-06 22:27:35 +0000
committercognet <cognet@FreeBSD.org>2008-03-06 22:27:35 +0000
commitee065875140a3c0e8f655e5b205c497518a08238 (patch)
tree2db71cdf5d8bddfddee3c7aa9af2748720d7c401 /sys/arm
parent26dccf5aecf4b4630533b19c1bccf3dabb93278a (diff)
downloadFreeBSD-src-ee065875140a3c0e8f655e5b205c497518a08238.zip
FreeBSD-src-ee065875140a3c0e8f655e5b205c497518a08238.tar.gz
MFi386:
revision 1.6 date: 2004/08/21 18:50:34; author: alc; state: Exp; lines: +3 -1 Properly free the temporary sf_buf in uiomove_fromphys() if a copyin or copyout fails. Obtained from: DragonFlyBSD Spotted out by: Mark Tinguely MFC After: 3 days
Diffstat (limited to 'sys/arm')
-rw-r--r--sys/arm/arm/uio_machdep.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/arm/arm/uio_machdep.c b/sys/arm/arm/uio_machdep.c
index ef6fa42..bc52a6e 100644
--- a/sys/arm/arm/uio_machdep.c
+++ b/sys/arm/arm/uio_machdep.c
@@ -100,8 +100,10 @@ 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) {
+ sf_buf_free(sf);
goto out;
+ }
break;
case UIO_SYSSPACE:
if (uio->uio_rw == UIO_READ)
OpenPOWER on IntegriCloud