mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-08-16 02:18:45 +03:00
firmware: protect uart_tx_queue against ISR
cardem: - dispatch_usb_command_cardem() appends to uart_tx_queue from the main loop - tx_byte_tpdu() dequeues from the USART IRQ handler @ NVIC prio 0 card_handle_reset() has the same issue, drains queue and frees uart_tx_msg from main loop while the ISR may own them. All of this needs protection against the irq. Needs a fixed llist_add_tail_irqsafe(), which called __enable_irq() instead of restoring the saved PRIMASK for some unknown reason?!?!?!? Change-Id: I7d9cdcc56263b27dfd4649dfb1da1d67761ee923
This commit is contained in:
@@ -34,7 +34,7 @@ static inline void llist_add_tail_irqsafe(struct llist_head *_new,
|
||||
|
||||
local_irq_save(x);
|
||||
llist_add_tail(_new, head);
|
||||
__enable_irq();
|
||||
local_irq_restore(x);
|
||||
}
|
||||
|
||||
static inline struct llist_head *llist_head_dequeue_irqsafe(struct llist_head *head)
|
||||
|
||||
Reference in New Issue
Block a user