mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
mailbox: altera: shut down RX polling timer on channel teardown
The RX polling callback unconditionally rearms the timer after it
processes mailbox data. altera_mbox_shutdown() uses
timer_delete_sync(), which waits for a running callback but does not
prevent that callback from rearming the timer after the deletion.
Use timer_shutdown_sync() for the final polling teardown so the timer
cannot be queued again while the mailbox channel is being released.
The timer is reinitialized with timer_setup() on a later channel startup,
so polling mode remains reusable.
Fixes: f62092f6d7 ("mailbox: Add Altera mailbox driver")
Cc: stable@vger.kernel.org
Assisted-by: Codex:GPT-5
Signed-off-by: Runyu Xiao <runyu.xiao@seu.edu.cn>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
This commit is contained in:
parent
5b3379ff06
commit
0cf10e6563
|
|
@ -270,7 +270,7 @@ static void altera_mbox_shutdown(struct mbox_chan *chan)
|
|||
writel_relaxed(~0, mbox->mbox_base + MAILBOX_INTMASK_REG);
|
||||
free_irq(mbox->irq, chan);
|
||||
} else if (!mbox->is_sender) {
|
||||
timer_delete_sync(&mbox->rxpoll_timer);
|
||||
timer_shutdown_sync(&mbox->rxpoll_timer);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user