thermosphère: fix deadlock

This commit is contained in:
TuxSH 2020-02-02 19:03:04 +00:00
parent c12a32c540
commit 7935c8b1ad

View file

@ -159,8 +159,11 @@ TransportInterface *transportInterfaceCreate(
void transportInterfaceAcquire(TransportInterface *iface) void transportInterfaceAcquire(TransportInterface *iface)
{ {
// Allow interrupts to be taken here if the caller allows it
recursiveSpinlockLock(&iface->lock);
// Get the lock, prevent the interrupt from being pending if there's incoming data // Get the lock, prevent the interrupt from being pending if there's incoming data
u64 flags = recursiveSpinlockLockMaskIrq(&iface->lock); u64 flags = maskIrq();
switch (iface->type) { switch (iface->type) {
case TRANSPORT_INTERFACE_TYPE_UART: { case TRANSPORT_INTERFACE_TYPE_UART: {