Date: Thu, 16 Oct 2008 10:42:10 +0000 (UTC) From: Alexander Leidinger <netchild@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r183944 - user/netchild/misc/src/sys/dev/hptmv Message-ID: <200810161042.m9GAgAuN058406@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200810161042.m9GAgAuN058406>