Merge pull request #4277 from diondokter/fix-usb-race

STM32 USB: Read data before register update
This commit is contained in:
Dario Nieuwenhuis 2025-06-03 14:14:45 +00:00 committed by GitHub
commit 141c170db4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -911,6 +911,8 @@ impl<'d, T: Instance> driver::EndpointOut for Endpoint<'d, T, Out> {
}; };
self.read_data_double_buffered(buf, packet_buffer)? self.read_data_double_buffered(buf, packet_buffer)?
} else { } else {
let len = self.read_data(buf)?;
regs.epr(index).write(|w| { regs.epr(index).write(|w| {
w.set_ep_type(convert_type(self.info.ep_type)); w.set_ep_type(convert_type(self.info.ep_type));
w.set_ea(self.info.addr.index() as _); w.set_ea(self.info.addr.index() as _);
@ -920,7 +922,7 @@ impl<'d, T: Instance> driver::EndpointOut for Endpoint<'d, T, Out> {
w.set_ctr_tx(true); // don't clear w.set_ctr_tx(true); // don't clear
}); });
self.read_data(buf)? len
}; };
trace!("READ OK, rx_len = {}", rx_len); trace!("READ OK, rx_len = {}", rx_len);