summaryrefslogtreecommitdiffstats
path: root/sys/dev/hptmv
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2005-03-31 05:15:27 +0000
committersam <sam@FreeBSD.org>2005-03-31 05:15:27 +0000
commit0f37f556b7b917470b04f16a84165624c63eca58 (patch)
tree71be040c1d3547f058978c8a252499f4c018feb2 /sys/dev/hptmv
parent049c04b5b180f7abf2580aef7da149e8d7c85e3a (diff)
downloadFreeBSD-src-0f37f556b7b917470b04f16a84165624c63eca58.zip
FreeBSD-src-0f37f556b7b917470b04f16a84165624c63eca58.tar.gz
check copyin return value (and while we're at it copyout too)
Noticed by: Coverity Prevent analysis tool
Diffstat (limited to 'sys/dev/hptmv')
-rw-r--r--sys/dev/hptmv/hptproc.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/sys/dev/hptmv/hptproc.c b/sys/dev/hptmv/hptproc.c
index 1c4fb90..997183f 100644
--- a/sys/dev/hptmv/hptproc.c
+++ b/sys/dev/hptmv/hptproc.c
@@ -293,22 +293,28 @@ static int hpt_set_info(int length)
return -EINVAL;
}
+ err = 0;
if (piop->nInBufferSize)
- copyin((void*)(ULONG_PTR)piop->lpInBuffer, ke_area, piop->nInBufferSize);
+ err = copyin((void*)(ULONG_PTR)piop->lpInBuffer, ke_area, piop->nInBufferSize);
/*
* call kernel handler.
*/
- err = Kernel_DeviceIoControl(&gIal_Adapter->VBus,
- piop->dwIoControlCode, ke_area, piop->nInBufferSize,
- ke_area + piop->nInBufferSize, piop->nOutBufferSize, &dwRet);
+ if (err==0)
+ err = Kernel_DeviceIoControl(&gIal_Adapter->VBus,
+ piop->dwIoControlCode, ke_area, piop->nInBufferSize,
+ ke_area + piop->nInBufferSize, piop->nOutBufferSize, &dwRet);
if (err==0) {
- if (piop->nOutBufferSize)
- copyout(ke_area + piop->nInBufferSize, (void*)(ULONG_PTR)piop->lpOutBuffer, piop->nOutBufferSize);
+ if (piop->nOutBufferSize) {
+ err = copyout(ke_area + piop->nInBufferSize, (void*)(ULONG_PTR)piop->lpOutBuffer, piop->nOutBufferSize);
+ if (err) KdPrintW(("Kernel_ioctl(): copyout (1) return %d\n", err));
+ }
- if (piop->lpBytesReturned)
- copyout(&dwRet, (void*)(ULONG_PTR)piop->lpBytesReturned, sizeof(DWORD));
+ if (piop->lpBytesReturned) {
+ err = copyout(&dwRet, (void*)(ULONG_PTR)piop->lpBytesReturned, sizeof(DWORD));
+ if (err) KdPrintW(("Kernel_ioctl(): copyout (2) return %d\n", err));
+ }
free(ke_area, M_DEVBUF);
return length;
OpenPOWER on IntegriCloud