diff options
author | cognet <cognet@FreeBSD.org> | 2008-03-06 22:27:35 +0000 |
---|---|---|
committer | cognet <cognet@FreeBSD.org> | 2008-03-06 22:27:35 +0000 |
commit | ee065875140a3c0e8f655e5b205c497518a08238 (patch) | |
tree | 2db71cdf5d8bddfddee3c7aa9af2748720d7c401 /sys/arm | |
parent | 26dccf5aecf4b4630533b19c1bccf3dabb93278a (diff) | |
download | FreeBSD-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.c | 4 |
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) |