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:
Jérôme Duval
2018-05-31 11:55:18 +00:00
parent 92875838d6
commit 499712a9ec
@@ -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