From owner-svn-src-user@FreeBSD.ORG Thu Oct 16 10:42:10 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B7AD41065693; Thu, 16 Oct 2008 10:42:10 +0000 (UTC) (envelope-from netchild@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A70EE8FC12; Thu, 16 Oct 2008 10:42:10 +0000 (UTC) (envelope-from netchild@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9GAgAXh058407; Thu, 16 Oct 2008 10:42:10 GMT (envelope-from netchild@svn.freebsd.org) Received: (from netchild@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9GAgAuN058406; Thu, 16 Oct 2008 10:42:10 GMT (envelope-from netchild@svn.freebsd.org) Message-Id: <200810161042.m9GAgAuN058406@svn.freebsd.org> From: Alexander Leidinger Date: Thu, 16 Oct 2008 10:42:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r183944 - user/netchild/misc/src/sys/dev/hptmv X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Oct 2008 10:42:10 -0000 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;