svn commit: r183944 - user/netchild/misc/src/sys/dev/hptmv
Alexander Leidinger
netchild at FreeBSD.org
Thu Oct 16 10:42:10 UTC 2008
Author: netchild
Date: Thu Oct 16 10:42:10 2008
New Revision: 183944
URL: http://svn.freebsd.org/changeset/base/183944
Log:
Error handling of copyin/copyout.
Modified:
user/netchild/misc/src/sys/dev/hptmv/hptproc.c
Modified: user/netchild/misc/src/sys/dev/hptmv/hptproc.c
==============================================================================
--- user/netchild/misc/src/sys/dev/hptmv/hptproc.c Thu Oct 16 10:41:02 2008 (r183943)
+++ user/netchild/misc/src/sys/dev/hptmv/hptproc.c Thu Oct 16 10:42:10 2008 (r183944)
@@ -261,7 +261,7 @@ hpt_set_info(int length)
#ifdef SUPPORT_IOCTL
PUCHAR ke_area;
- int err;
+ int err = 0;
DWORD dwRet;
PHPT_IOCTL_PARAM piop;
#endif
@@ -301,21 +301,26 @@ hpt_set_info(int length)
}
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;
More information about the svn-src-user
mailing list