Fixes RP2040 buffer reallocation overrun problem (#642)

Fix running out of memory on a device that repeatedly closes and opens an endpoint. This is a workaround at the moment. A better solution would be to implement reclaiming usb buffer memory when closing an endpoint (i.e. implement dcd_edpt_close).
This commit is contained in:
ndinsmore 2021-02-12 03:16:46 -05:00 committed by GitHub
parent 04ab6b4082
commit 09868434cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 6 additions and 2 deletions

View File

@ -164,8 +164,12 @@ static void _hw_endpoint_init(struct hw_endpoint *ep, uint8_t ep_addr, uint wMax
ep->endpoint_control = &usb_dpram->ep_ctrl[num-1].out;
}
// Now alloc a buffer and fill in endpoint control register
_hw_endpoint_alloc(ep);
// Now if it hasn't already been done
//alloc a buffer and fill in endpoint control register
if(!(ep->configured))
{
_hw_endpoint_alloc(ep);
}
}
ep->configured = true;