device_manager: IORequest: use user_memcpy() to access a user buffer.
* should fix #14164, but the case can't be reproduced easily it seems. Change-Id: I636db93cc1efe2784b2530dced6a900fbfe3dce8
This commit is contained in:
@@ -1281,6 +1281,16 @@ IORequest::_CopySimple(void* bounceBuffer, generic_addr_t external, size_t size,
|
||||
{
|
||||
TRACE(" IORequest::_CopySimple(%p, %#" B_PRIxGENADDR ", %lu, %d)\n",
|
||||
bounceBuffer, external, size, copyIn);
|
||||
if (IS_USER_ADDRESS(external)) {
|
||||
status_t status = B_OK;
|
||||
if (copyIn)
|
||||
status = user_memcpy(bounceBuffer, (void*)(addr_t)external, size);
|
||||
else
|
||||
status = user_memcpy((void*)(addr_t)external, bounceBuffer, size);
|
||||
if (status < B_OK)
|
||||
return status;
|
||||
return B_OK;
|
||||
}
|
||||
if (copyIn)
|
||||
memcpy(bounceBuffer, (void*)(addr_t)external, size);
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user