On Wed, 18 Dec 2024 13:10:28 +0100 Marc Kleine-Budde wrote: > + while ((ir_read = m_can_read(cdev, M_CAN_IR)) != 0) { > + ir |= ir_read; > + > + /* ACK all irqs */ > + m_can_write(cdev, M_CAN_IR, ir); Perhaps consider adding a cap on how many times this can loop as a follow up? Maybe if the HW is bad all bets are off, anyway, but potential infinite loop inside an IRQ feels a little scary.