1
0
Fork 0
forked from len0rd/rockbox

hwstub: fix horrible bug

Change-Id: I8042f692045a23dbb545d840e5169ce4b99fe5d2
This commit is contained in:
Amaury Pouly 2014-08-05 18:18:46 +02:00
parent dd05dc76a4
commit d3df564486

View file

@ -376,7 +376,6 @@ static void handle_read(struct usb_ctrlrequest *req)
{ {
if(id != last_id) if(id != last_id)
return usb_drv_stall(EP_CONTROL, true, true); return usb_drv_stall(EP_CONTROL, true, true);
memcpy((void *)last_addr, usb_buffer, req->wLength);
memcpy(usb_buffer, (void *)last_addr, req->wLength); memcpy(usb_buffer, (void *)last_addr, req->wLength);
asm volatile("nop" : : : "memory"); asm volatile("nop" : : : "memory");
usb_drv_send(EP_CONTROL, usb_buffer, req->wLength); usb_drv_send(EP_CONTROL, usb_buffer, req->wLength);
@ -392,7 +391,7 @@ static void handle_write(struct usb_ctrlrequest *req)
int sz_hdr = sizeof(struct hwstub_write_req_t); int sz_hdr = sizeof(struct hwstub_write_req_t);
if(size < sz_hdr) if(size < sz_hdr)
return usb_drv_stall(EP_CONTROL, true, true); return usb_drv_stall(EP_CONTROL, true, true);
memcpy((void *)write->dAddress, usb_buffer + sz_hdr, req->wLength - sz_hdr); memcpy((void *)write->dAddress, usb_buffer + sz_hdr, size - sz_hdr);
usb_drv_send(EP_CONTROL, NULL, 0); usb_drv_send(EP_CONTROL, NULL, 0);
} }